2017-02-16 1 views
1

Hallo Ich entwickle eine Website mit Codeigniter mit mehrdimensionalen dynamischen Menüs. Ich benutze Codeingiter und mysql Ich habe create Menü, submenu1, submenu2. Jetzt wird das Menu und Submenu1 in die Webseite geladen, aber ich versuche submenu2 zu laden. Ich bekomme das Problem, dass ich die array_push Methode in PHP verwende. Hier ist mein Code in diesem Code i bereits Lademenü und submenu1 kann jede Stelle mir helfen, wie auch laden submenu2 ...Code-Nummer mit mysql Multidimensional Dynamic Menu Creation?

Dies ist mein Code anzeigen ..

<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 } ?> 

Dies ist mein Controller-Code

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'); 
    } 

Das ist mein Modellcode

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

Ihre MySQL-Tabelle Struktur zeigen und einen Auszug seines Inhalts – sintakonte

+0

@sintakonte. Erste Tabelle ist Menü Die Felder sind M_Id, Menuname Der zweite Tabellenname ist submenu1 Felder sind submenu_id, menu_id, submenu_name, dritte Tabellenname ist submenu_2 die Felder sind smt_id, menu_id, submenu_id, smt_name – pixel

+0

meiner Meinung nach gibt es keinen Grund, 3 zu haben Tabellen - ist dies eine zwingende Voraussetzung oder sind Sie flexibel genug, um dies auf einen Tisch zu reduzieren - wenn ja, kann ich Ihnen eine Antwort geben;) – sintakonte

Antwort

0

wie this.Need Versuchen mehrdimensionales Array zu machen.

MODEL

// $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 mat ich muss noch ein Untermenü hinzufügen .. – pixel

+0

haben Sie oben genannten Code versucht? –

+0

@yes Hek Mat Ich versuche das oben Code ... Dies ist Meine Tabellen Details Erste Tabelle ist Menü Die Felder sind M_Id, Menuname Der zweite Tabellenname ist submenu1 Felder sind submenu_id, menu_id, submenu_name, dritte Tabellenname ist submenu_2 die Felder sind smt_id, menu_id, submenu_id, smt_name – pixel