2017-02-16 96 views
1

您好我正在開發一個網站使用codeigniter multidimentional動態菜單。我使用codeingiter和MySQL我有創建菜單,子菜單1,子菜單2。現在Menu和Submenu1正在加載網站,但我嘗試加載submenu2我得到的問題,我在php中使用array_push方法。這是我在此代碼代碼我已經加載菜單和submenu1任何機構可以幫助我如何加載submenu2也...Codeingniter with mysql Multidementional動態菜單創建?

這是我的看法代碼..

<div class="collapse navbar-collapse"> 
        <ul class="nav navbar-nav"> 
         <li class="active"><a href="<?php echo base_url()?>Pixel/index" >Home</a></li> 
         <?php foreach($menus as $menu) { ?> 
          <li id="mainmenu"> 
           <a href="#" class="dropdown-toggle" id="<?php echo $menu->m_id; ?>" data-toggle="dropdown"> <?php echo $menu->menuname; ?> <b class="caret"></b></a> 
           <ul class="dropdown-menu"> 
            <?php 
            if (isset($menu->children)) { 
            foreach ($menu->children as $child) { 
             ?> 
            <li> 
             <a href="<?php echo base_url()?>Pixel/corporate" id="submenuone" class="dropdown-toggle"><?php echo $child->submenu_name; ?> 
             </a> 
            </li> 
            <?php 
             } 

            } ?> 
           </ul> 
          </li> 
         <?php } ?> 

這是我的控制器代碼

public function index() 
    { 
       $menus = $this->Px_Model->populateMenus(); 
       $data = array('menus' => $menus); 
       $this->load->view('pxHead'); 
       $this->load->view('pxHeader'); 
       $this->load->view('pxNav',$data); 
       $this->load->view('pxSlider'); 
       $this->load->view('pxHome'); 
       $this->load->view('pxFooter'); 
    } 

這是我的模型代碼

public function populateMenus(){ 
    $this->db->select("*"); 
    $this->db->from("menu"); 
    $q = $this->db->get(); 
    $final = array(); 
    if ($q->num_rows() > 0) { 
    foreach ($q->result() as $row){ 
      $this->db->select("*"); 
      $this->db->from("submenu1"); 
      $this->db->where("menu_id", $row->m_id); 
      $q = $this->db->get(); 
      if ($q->num_rows() > 0) { 
       $row->children = $q->result(); 
      } 
      array_push($final, $row); 
     } 
    } 
    return $final; 
    } 
+0

顯示你的mysql表的結構和它的內容 – sintakonte

+0

@sintakonte的摘錄。第一個表是菜單這些字段是M_Id,Menuname第二個表名是子菜單1字段是submenu_id,menu_id,submenu_name,第三個表名是子菜單_2,這些字段是smt_id,menu_id,submenu_id,smt_name – pixel

+0

在我看來沒有理由有3表 - 這是一個強制性的要求,或者你有足夠的靈活性,以減少這一表 - 如果是這樣我可以給你一個答案;) – sintakonte

回答

0

嘗試像this.Need使多維數組。

模型

// $final = array(); 
if ($q->num_rows() > 0) { 
foreach ($q->result() as $row){ 
     $final[]['menuname'] = $row->menuname; 
     $final[]['m_id'] = $row->m_id; 
     $this->db->select("*"); 
     $this->db->from("submenu1"); 
     $this->db->where("menu_id", $row->m_id); 
     $q = $this->db->get(); 
     if ($q->num_rows() > 0) { 
      $final[]['children'] = $q->result(); 
     } 

    } 
} 
return $final; 
} 

VIEW

<div class="collapse navbar-collapse"> 
       <ul class="nav navbar-nav"> 
        <li class="active"><a href="<?php echo base_url()?>Pixel/index" >Home</a></li> 
        <?php foreach($menus as $key=>$menu) { ?> 
         <li id="mainmenu"> 
          <a href="#" class="dropdown-toggle" id="<?php echo $menu['m_id']; ?>" data-toggle="dropdown"> <?php echo $menu['menuname']; ?> <b class="caret"></b></a> 
          <ul class="dropdown-menu"> 
           <?php 
           if (isset($menu['children'])) { 
           foreach ($menu['children'] as $child) { 
            ?> 
           <li> 
            <a href="<?php echo base_url()?>Pixel/corporate" id="submenuone" class="dropdown-toggle"><?php echo $child->submenu_name; ?> 
            </a> 
           </li> 
           <?php 
            } 

           } ?> 
          </ul> 
         </li> 
        <?php } ?> 
+0

@hi hek席子我需要添加一個子菜單.. – pixel

+0

你試過上面的代碼? –

+0

@yes Hek Mat我嘗試上面的代碼...這是我的表格細節First Table is Menu這些字段是M_Id,Menuname第二個表名是子菜單1字段是submenu_id,menu_id,submenu_name,第三個表名是submenu_2字段是smt_id,menu_id,submenu_id,smt_name – pixel