将分层数据表显示到php codeigniter菜单树视图中

时间:2017-10-04 01:44:14

标签: php codeigniter treeview hierarchical-data

我创建了一个树视图数据表,如下所示:

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";

我做了一些研究,但找不到将数据数组显示到预期菜单树的方法。有什么解决方案我可以做到吗?

1 个答案:

答案 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>