基本上我在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,如果父节点是用户则重置为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
答案 0 :(得分:0)
我不明白你的$if++
。我认为这是你的缩进程度。如果是这样:删除$if++
,修改内部isparent($row['ID'],$if+1)
,你应该没事......我猜。
或者,将您的$if++
移到while循环之外(之前; o)
另外:我相信你不需要mysql_num_rows(...)
。刚刚开始抓取,如果它完成,它将不返回任何内容。另外,不要使用mysql_ *,请使用mysqli或pdo。
如果您的$if
旨在统计孩子,请将其称为$n
,不要混淆深度和数量。