我想使用 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 } ?>
我在一个字段下只有一个 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 } ?>