基本上,我在MYSQL中有一个表
Name ID Parent
Bob 321 root
Sue 32 root
Boo 393 32
Geek 72 393
Sam 312 393
Tovoc 341 321
Reese 322 393
Sheep 811 341 我想创建一个菜单,该菜单根据父ID输出带有子菜单的菜单结构
因此,它应该输出
Bob
Tovoc
Sheep
Sue
Boo
Sam
Geek
Reese子条目与父ID链接,如果它们有父条目,它们就成为子条目。最终,它将构建一个多维数组。线索?
这就是我到目前为止所得到的。它可以工作,但我不知道如何适当地增加或重置页边距样式,以获得一个漂亮的结构视图。我让找到的每个子元素的左边距增加10px,如果父元素是user,则将其重置回1
isparent(user,1);
function isparent($Parent,$if=1){
$stdr = 'SELECT * FROM CraveBins WHERE UserID = '.$_SESSION[CraveUserID].' AND Parent=\''.$Parent.'\' ORDER BY Name ASC';
$resultMainMenu = mysql_query($stdr) or die('421 '.$stdr.mysql_error());
if(mysql_num_rows($resultMainMenu)){
while($row = mysql_fetch_array($resultMainMenu)){
$if++;
echo '<div class="binDir" onclick="setBin(this)" id="BinListUser" style="margin-left:'.(5+($if * 10)).'px" driID="'.$row[ID].'">'.$row['Name'].'</div>'; // echo main menu
$n = isparent($row['ID'],$if);
}//end while
}else{
$if=1;
} // if rows
}//end function发布于 2016-07-19 16:24:45
我不明白你的$if++。我以为这是你的压痕级别。如果是这样的话:删除$if++,修改内部的isparent($row['ID'],$if+1),这样就可以了……我想是的。
或者,将$if++移到while循环之外(在;o之前)
另外:我相信你不需要mysql_num_rows(...)。只需开始抓取,如果完成则不会返回任何内容。另外,不要使用mysql_*,使用mysqli或pdo。
如果你的$if是用来计算孩子个数的,就叫它$n吧,不要把深度和计数混在一起。
https://stackoverflow.com/questions/24371501
复制相似问题