繁体   English   中英

PHP创建层次结构菜单结构

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM