我想使用codeigniter在父类别下显示子类别

时间:2016-03-31 04:06:43

标签: php codeigniter codeigniter-2 codeigniter-3

我只有一个table.all类别名称在一个字段和父类别字段下面。我的表结构如下

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 ;

如果有人知道解决方案,那么请帮助

2 个答案:

答案 0 :(得分:0)

你可以做到这一点。首先从表中选择不同的父类别。 使用foreach,您可以显示所有父类别。

在foreach循环中,在helper / controller中创建一个函数,将parent_cat_id传递给该函数,现在获取该特定类别的所有子cat。就像:getSubCategories($ parent_cat_id);

如果表中有一些子类别,该函数会返回数据,否则它不会返回任何内容。

如果您需要其他任何内容,请告诉我,如果是解决方案,请回答+1。

答案 1 :(得分: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 } ?>