如何在php中根据表值使菜单成为动态的?

j8ag8udp  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(352)

下表将主菜单和子菜单包含在同一列中 menu_root_id 为了 submenu 基于 menu_code 区分 main_menu 以及 submenu . 我需要显示所有 submenu 低于 mainmenu 基于该表动态生成以下html菜单代码。请帮我怎么做?

这是我的html静态菜单代码:

<!-- sidebar menu -->
          <ul class="sidebar-menu" data-widget="tree">
            <li class="nav-devider"></li>
            <li class="header nav-small-cap"></li>

            <li class="treeview">
              <a href="#">
                <i class="fa fa-database"></i>
                <span>Main Menu1</span>
                <span class="pull-right-container">
                  <i class="fa fa-angle-right pull-right"></i>
                </span>
              </a>
              <ul class="treeview-menu">
                <li><a href="">Sub menu1</a></li>
                <li><a href="">Sub menu2</a></li>            
                <li><a href="">Sub menu3</a></li>
              </ul>
            </li>

             <li class="treeview">
              <a href="#">
                <i class="fa fa-user"></i>
                <span>Main Menu2</span>
                <span class="pull-right-container">
                  <i class="fa fa-angle-right pull-right"></i>
                </span>
              </a>
              <ul class="treeview-menu">
                <li><a href="">Sub menu4</a></li>
                <li><a href="">Sub menu5</a></li>            
                <li><a href="">Sub menu6</a></li>
              </ul>
            </li>
          </ul>

这是我的动力code:but it 显示不正确。

<!-- sidebar menu -->
          <ul class="sidebar-menu" data-widget="tree">
            <li class="nav-devider"></li>
            <li class="header nav-small-cap"></li>
              <?php
                    $query =  $this->db->get('create_menu');
                    $this->db->order_by("menu_order_no", "asc");
                        if($query -> num_rows() > 0){
                            foreach ($query->result_array() as $row) {
                                 ?>
                <li class="treeview">
                      <a href="#">
                        <i class="fa fa-database"></i>
                        <span><?php if($row['menu_root_id'] == "")
                                 {  echo $row['menu_name']; }
                             ?>
                        </span>
                        <span class="pull-right-container">
                          <i class="fa fa-angle-right pull-right"></i>
                        </span>
                      </a>

                      <ul class="treeview-menu">
                                <?php ?> <li><a href=""><?php print_r($row['menu_name']); ?></a></li><?php  ?>
                      </ul>
                </li>
                    <?php   } }  ?>             
         </ul>
tv6aics1

tv6aics11#

试试这个:-

<ul class="sidebar-menu" data-widget="tree">
  <li class="nav-devider"></li>
  <li class="header nav-small-cap"></li>
  <?php
    // Get here all the main menu's in $query by having the condition that menu_root_id=null
    if($query->num_rows() > 0) {
      foreach ($query->result_array() as $row) {
  ?>
  <li class="treeview">
    <a href="#">
      <i class="fa fa-database"></i>
      <span><?php echo $row['menu_name']; ?></span>
      <span class="pull-right-container">
        <i class="fa fa-angle-right pull-right"></i>
      </span>
    </a>
    <ul class="treeview-menu">
      <?php
        // Get here all the sub menu's in $query1 by having the condition that menu_root_id=$row['menu_code']
        if($query1->num_rows() > 0) {
          foreach ($query1->result_array() as $row1) {
      ?>
      <li><a href="<?php echo $row1['menu_path']; ?>"><?php echo $row1['menu_name']; ?></a></li>
      <?php
          }
        }
      ?>
    </ul>
  </li>
  <?php
      }
    }
  ?>
</ul>

很简单。基本的想法是先把主菜单上的所有内容都放在上面,然后在上面循环。然后在子菜单上循环,得到带有链接的名称。
我不知道ci。所以我把查询区域作为注解。

gijlo24d

gijlo24d2#

首先当菜单根id为空时得到菜单代码,然后得到菜单代码,然后根据我得到相关的菜单代码结果
类似这样的代码从表名中选择菜单代码,其中菜单根id为空
那么
选择*from table name where menu root id=菜单代码
我想你用过这种方法一次

相关问题