首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP创建分层菜单结构

PHP创建分层菜单结构
EN

Stack Overflow用户
提问于 2014-06-24 01:08:11
回答 1查看 419关注 0票数 0

基本上,我在MYSQL中有一个表

代码语言:javascript
复制
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输出带有子菜单的菜单结构

因此,它应该输出

代码语言:javascript
复制
Bob  
 Tovoc 
  Sheep

Sue
 Boo
 Sam
  Geek
 Reese

子条目与父ID链接,如果它们有父条目,它们就成为子条目。最终,它将构建一个多维数组。线索?

这就是我到目前为止所得到的。它可以工作,但我不知道如何适当地增加或重置页边距样式,以获得一个漂亮的结构视图。我让找到的每个子元素的左边距增加10px,如果父元素是user,则将其重置回1

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2016-07-19 16:24:45

我不明白你的$if++。我以为这是你的压痕级别。如果是这样的话:删除$if++,修改内部的isparent($row['ID'],$if+1),这样就可以了……我想是的。

或者,将$if++移到while循环之外(在;o之前)

另外:我相信你不需要mysql_num_rows(...)。只需开始抓取,如果完成则不会返回任何内容。另外,不要使用mysql_*,使用mysqli或pdo。

如果你的$if是用来计算孩子个数的,就叫它$n吧,不要把深度和计数混在一起。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24371501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档