可能的重复:
如何将一系列亲子关系转换为层次树?
我正在研究Web应用程序。并希望使导航数据库驱动。多级导航,顺便说一句。现在,它的棘手部分是,我只想使用一个表。我看了看,阅读和搜索,但找不到答案。
我的表结构是
ID | NAME | LINK | ALC | PARENT_ID |
0 Home # 0 0
1 Ops # 0 0
2 ops1 # 0 1
3 ops2 # 0 1
问题是如何在数组中获取DB内容,以便我能够使用子类别创建列表标签
<ul>
<li>HOME</li>
<li>OPS
<ul>
<li>ops1</li>
<li>ops2</li>
</ul>
</li>
</ul>
它称为递归函数,它们称为自己。概念证明:
function printUL($parentID = 0){
// select elements with PARENT_ID = $parentID (or PARENT_ID = NULL if 0)
if(!$children){
return;
}
// now print stuff
echo '<ul>';
foreach($children as $child){
echo '<li>';
echo $child['NAME']; // change as you need
printUL($child['ID']); // functions calls itself to dig deeper
echo '</li>';
}
echo '</ul>';
}
// call for root element
printUL($parentID);
希望这是有道理的。将其更改为您的需求。
function myTree($parent_id) {
$sql = mysql_query("SELECT category_id, category_name
FROM categories
WHERE parent_id='$parent_id'");
if(mysql_num_rows($sql) != 0) {
echo '<ul>';
while($row = mysql_fetch_array($sql)) {
echo '<li>' . $row['category_name'];
myTree($row['category_id']);
echo '</li>';
}
echo '</ul>';
}
}
echo '<div>';
myTree(0);
echo '</div>';