2016-03-31 111 views
1

我只有一個table.all類別名稱在一個字段和父類別字段在那裏。我的表結構如下我想要在父類別下使用codeigniter顯示子類別

CREATE TABLE IF NOT EXISTS `jil_category` (
    `ctg_id` int(11) NOT NULL AUTO_INCREMENT, 
    `ctg_name` varchar(255) NOT NULL, 
    `ctg_section` int(11) NOT NULL, 
    `ctg_details` text NOT NULL, 
    `ctg_status` int(11) NOT NULL, 
    `ctg_index` int(11) NOT NULL, 
    `ctg_parent` int(11) NOT NULL, 
    `ctg_image` varchar(300) NOT NULL, 
    `ctg_dated` int(11) NOT NULL, 
    `ctg_ipadd` varchar(30) NOT NULL, 
    `ctg_ldated` int(11) NOT NULL, 
    `ctg_lipadd` varchar(30) NOT NULL, 
    PRIMARY KEY (`ctg_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=196 ; 

如果有人知道的解決方案,那麼請幫助

回答

0

我給你舉個例子

function menu() 
{ 
    $menus = $this->db->get_where('jil_category', array('ctg_parent'=>0))->result(); 
    $data = []; 
    foreach($menus as $menu) 
    { 
     $submenu = $this->db->get_where('jil_category',array('ctg_parent'=>$menu->ctg_id)); 
     if($submenu->num_rows()>0) 
      $menu->submenu = $submenu->result(); 
     else 
      $menu->submenu = []; 

     $data[] = $menu; 
    } 
    $menudata['menus'] =$data; 
    $this->load->view(index,$menudata); 

} 

在您查看

foreach($menus as $menu) 
{ ?> 
    <li><?php echo $menu->ctg_name; 
     if(!empty($menu->submenu)){ echo '<ul>'; 
      foreach($menu->submenu as $submenu){ ?> 
      <li><?=$submenu->ctg_name?></li> 
      <?php } echo '</ul>'; }?> 
    </li> 
<?php } ?> 
0

你可以做到這一點。首先從表中選擇不同的父類別。 使用foreach可以顯示所有父類別。

在foreach循環中,在助手/控制器中創建一個函數,將parent_cat_id傳遞給該函數,現在獲取該特定類別的所有子貓。就像:getSubCategories($ parent_cat_id);

如果表中存在一些子類別,則函數返回數據,否則它將返回任何內容。

讓我知道如果你需要任何其他的東西,如果這是解決方案,+1的答案。

+0

艾哈邁德,這裏是Vinie已粘貼示例代碼爲您的代碼 – user6021279

+0

。我告訴你它是如何工作的。 –

+0

但它不適用於n個子菜單 – user6021279

相關問題