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

i want to display subcategories right under parent category using codeigniter

我在一个字段下只有一个 table.all 类别名称,父类别字段在那里。我的table结构如下

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 ;

如果有人知道解决方法,请帮忙

你可以的。首先 select 不同于 Table 的父类别。 使用 foreach 可以显示所有父类别。

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

如果 table 中有一些子类别,函数 returns 提供数据,否则它 returns 什么都没有。

让我知道您是否需要其他任何东西,如果那是解决方案,+1 答案。

我给你举个例子

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