[英]PHP create a hierarchy menu structure
基本上我在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
我不明白你的$if++
。 我以为这是您的缩进程度。 如果是这样的话:删除$if++
,修改内部的isparent($row['ID'],$if+1)
,你应该没事……我想。
或者,将$if++
移动到while循环之外(在; o之前)
另外:我相信您不需要mysql_num_rows(...)
。 只需开始获取,完成就不会返回任何内容。 另外,请勿使用mysql _ *,mysqli或pdo。
如果您的$if
是用来计算孩子的,只需将其命名为$n
,不要将深度和数量混合在一起。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.