使用codeigniter

时间:2016-12-15 23:09:56

标签: php codeigniter

我正在尝试使用codeigniter显示和列出数据库中每个类别的数据。

表格结构:

类别:id_cat,name_cat

子类别:id_subcat,id_cat,name_subcat

我希望输出如下:

  1. 汽车
    • 兰博基尼
    • 福特
    • 日产
  2. 自行车
    • 本田
    • 雅马哈
  3. 飞行
    • 波音
  4. 但是,当我运行我的代码时,它显示如下:

    1. 汽车
      • 兰博基尼
      • 福特
      • 日产
    2. 自行车
      • 兰博基尼
      • 福特
      • 日产
    3. 飞行
      • 兰博基尼
      • 福特
      • 日产
    4. 我的代码:

      控制器

      $this->data['get_category'] = $this->Category_model->get_all_sidebar();
      $this->data['get_subcat'] = $this->Subcategory_model->get_all_sidebar();
      $this->load->view('front/body', $this->data);
      

      模型

      分类

      public function get_all_sidebar()
      {
        return $this->db->get($this->table)->result();
      }  
      

      子类别

      public function get_all_sidebar()
      {
        $this->db->select('*');
        $this->db->join('category', 'category.id_cat = subcategory.id_cat');
        $this->db->order_by('id_subcat', 'ASC');
        return $this->db->get('subcategory')->result();
      }  
      

      查看

      <?php
      echo '<ul class="category">';
      foreach($get_category as $category)
      {
        echo "<li>$category->name_cat</li>";
      
        echo "<ul>";
        foreach($get_subcat as $subcat)
        {
          echo "<li>$subcat->name_subcat</li>";
        }
          echo "</ul>";
      
      }
      echo "</ul>";
      ?>
      

      任何帮助都会如此欣赏,谢谢

1 个答案:

答案 0 :(得分:1)

试试这个

public function get_categories() {
    $query = $this->db->get('category');
    $return = array();
    foreach ($query->result() as $category) {
        $return[$category->id_cat] = $category;
        $return[$category->id_cat]->subs = $this->get_sub_categories($category->id_cat);
    } return $return;
}

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

然后在您的控制器中

$data['categories'] = $this->Category_model->get_categories();
$this->load->view('front/body', $data);

并像这样使用

<ul class="category">
    <?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>