我有db表,其中放置了菜单项。我的表有3列:id,parent_id和name。我想从这张桌子构建树。 怎么做?
答案 0 :(得分:2)
试试此代码
$query = "SELECT * FROM menu_items";
$result = mysql_query($query);
if (mysql_num_rows($result) > 0) {
$myTreeArray = array();
while ($row = mysql_fetch_assoc($result)) {
if(!isset($myTreeArray[$row['parent_id']])){
$myTreeArray[$row['parent_id']] = array();
}
array_push($myTreeArray[$row['parent_id']], array($row['id'] => $row['name']));
}
}
echo '<pre>';
print_r($myTreeArray);
echo '</pre>';
这将为您提供一个关联数组,其中包含由其父ID索引的菜单项列表。然后,您可以循环$myTreeArray
并打印列表。
答案 1 :(得分:1)
虽然可以在没有nested sets的情况下执行此操作,但嵌套集会使您的查询更有效率。
以下是一些有关如何设置的好教程:
http://www.sitepoint.com/hierarchical-data-database/ (它实际上并没有使用术语嵌套集,但第2页描述了“修改预订树遍历”标题下的相同概念)
http://mycrazydream.net/2009/04/nested-sets-for-category-structure-in-a-mysql-database/