我创建了一个树视图数据表,如下所示:
id | parent_id | name
1 null Japan
2 1 Tokyo
3 2 Nerima
4 2 Chiyoda
5 null America
6 5 New York
7 5 Washington
我想检索数据并在树状菜单中查看。这是我的HTML代码:
<ul class="sidebar-menu">
<li class="treeview">
<a href="#">
<i class="fa fa-institution"></i>
<span>Japan</span>
</a>
<ul class="treeview-menu">
<li>
<a>Tokyo</a>
<ul class="treeview-menu">
<li><a>Nerima</a></li>
<li><a>Chiyoda</a></li>
</ul>
</li>
</ul>
</li>
<li class="treeview">
<a><span>America</span></a>
<ul class="treeview-menu">
<li><a>New York</a></li>
<li><a>Washington</a></li>
</ul>
</li>
</ul>
这是我的查询代码:
$query = "SELECT * FROM menu_tree WHERE parent_id='".$parent_id."' ORDER BY name";
我做了一些研究,但找不到将数据数组显示到预期菜单树的方法。有什么解决方案我可以做到吗?
答案 0 :(得分:0)
经过一些研究,我发现了解决方案。 在下面调用此功能将显示预期的菜单。 对于那些面临同样问题的人。
function build_menu($rows,$parent)
{
$temp = "<ul class=\"treeview-menu\">";
$result = "";
foreach ($rows as $row)
{
if ($row['parent_id'] == $parent){
$result.= "<li class=\"treeview\"><a href=" . site_url('admin/dashboard?id=') . $row['id'] ."><span>{$row['name']}</span></a>";
if ($this->has_children($rows,$row['id']))
$result.= $temp . $this->build_menu($rows,$row['id']);
}
}
$result.= "</ul>";
return $result;
}
function has_children($rows,$id)
{
foreach ($rows as $row) {
if ($row['parent_id'] == $id)
return true;
}
return false;
}
}
这是视图文件中的代码:
<ul class="sidebar-menu">
<?php echo $CI->menu_tree->build_menu($menu_tree,0);?>
</ul>