使用 CodeIgniter 显示类别和子类别

Display Categories and subcategories using CodeIgniter

我的数据库里有两个table,一个是Categories,一个是Sub_Categories,我想这样显示:

Categorie 1 
sub categoie 1 
sub categoie 2 
sub categoie 3 
sub categoie 4
Categorie 2 
sub categoie 1 
sub categoie 2 
sub categoie 3 
sub categoie 4

但我不知道该怎么做。 在我的数据库 table 中,我有以下字段: 类别:ID、名称、图标。 Sub_Categories:身份证,Categ_id,姓名

这应该有效;

public function get_categories()
{
    $query = $this->db->get('Categories');
    $return = array();

    foreach ($query->result() as $category)
    {
        $return[$category->id] = $category;
        $return[$category->id]->subs = $this->get_sub_categories($category->id); // Get the categories sub categories
    }

    return $return;
}


public function get_sub_categories($category_id)
{
    $this->db->where('Category', $category_id);
    $query = $this->db->get('Sub_Categories');
    return $query->result();
}

这只是获取所有类别,然后获取每个类别的所有子类别。调用 get_categories() 函数应该 return 一个您想要的格式的对象。

希望对您有所帮助。

编辑

您可以从控制器调用 get_categories 函数并将其传递给视图;

$data['categories'] = $this->your_model->get_categories();
$this->load->view('view_file', $data);

然后在您的视图中,您将像这样显示它们;

<ul>
<?php 
    foreach ($categories as $category)
        {
?>
    <li><?php echo $category->name; ?>
<?php
    if(!empty($category->subs)) { 
        echo '<ul>';
        foreach ($category->subs as $sub)  {
            echo '<li>' . $sub->name . '</li>';
        }
        echo '</ul>';
    }
?>
</li>
<?php
}
?>
</ul>

数据库 image for database table 试试这个 在型号

public function getCategories()
{
    $query = $this->db->query('select * from categories where cat_parent=0');
    return $query->result_array();
}
public function getCategoriesSub($parent)
{
    $query = $this->db->query("select * from categories where cat_parent='$parent'");
    return $query->result_array();
}

在控制器中

public function categories()
{
    $data['mcats'] = $this->admin_model->getCategories();
    foreach($data['mcats'] as $key =>$val){
        $subcats = $this->admin_model->getCategoriesSub($val['cid']);
        if($subcats){
            $data['scats'][$val['cid']] = $subcats;
        }
    }
    $this->load->view('admin/header');
    $this->load->view('admin/category_list', $data);
    $this->load->view('admin/footer');

}

可见

<ul>
<?php 
foreach ($mcats as $key =>$val)
    {
?>
<li><?php echo $val['cat_name']; ?>
<ul>
<?php
    foreach ($scats[$val['cid']] as $sub)  {
        echo '<li>' . $sub['cat_name'] . '</li>';
    }
?>
</ul>
</li>
<?php
}
?>
</ul>

它已经可以工作的代码 - 我认为它很有用