2016-03-31 72 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

相关问题