如何在Codeigniter下拉列表中显示类别和多级子类别

问题描述:

你好朋友我是Codeigniter中的新手我没有任何项目的经验我正在为购物网站进行学习目的只有不是真正的Project.When创建管理面板我能够获取类别和子类别使用循环的树,但是如何在树形格式的下拉菜单中获取这些类别。如何在Codeigniter下拉列表中显示类别和多级子类别

Like this- 
Electronics 
    ->Phones 
     ->Tablets 
     ->Mobiles 
    ->Computer 
     ->Laptops 
     ->Desktops 
Furniture 
    ->Tables 
     ->Plastic Table 
     ->Wooden Table 

我的模型是: -

function getcategories($parent_id = 0) { 
       $categories = array(); 
       $this->db->where('parentid',$parent_id); 
       $query = $this->db->get('categories'); 
       $result = $query->result_array(); 
        foreach ($result as $mainCategory) { 
        $category       = array(); 
        $category['id']      = $mainCategory['id']; 
        $category['categoryname']   = $mainCategory['categoryname']; 
        $category['parentid']    = $mainCategory['parentid']; 
        $category['sub_categories']   = $this->getcategories($category['id']); 
        $categories[$mainCategory['id']] = $category; 
        } 
        return $categories; 

     } 

我的类别阵列是这个样子的: -

Array 
(
    [category] => Array 
     (
      [1] => Array 
       (
        [id] => 1 
        [categoryname] => Electronics 
        [parentid] => 0 
        [sub_categories] => Array 
         (
          [2] => Array 
           (
            [id] => 2 
            [categoryname] => Smartphones 
            [parentid] => 1 
            [sub_categories] => Array 
             (
              [4] => Array 
               (
                [id] => 4 
                [categoryname] => Sony 
                [parentid] => 2 
                [sub_categories] => Array 
                 (
                 ) 

               ) 

             ) 

           ) 

          [3] => Array 
           (
            [id] => 3 
            [categoryname] => Televisions 
            [parentid] => 1 
            [sub_categories] => Array 
             (
             ) 

           ) 

         ) 

       ) 

     ) 

) 

我的数据库表如下所示: - it is my database table

+0

首先,为什么要在选择下拉列表中显示所有分层数据,因为这样做不是好习惯。下拉菜单用于列出项目。 – Zeeshan

+0

我想在创建产品时显示应该有选择类别,我认为这是至关重要的。如果您认为这不是好的做法,那么当我创建产品时,我该如何定义类别下的产品。 –

+0

当我创建一个像iPhone 7的产品,那么我会给它类别电子产品 - >智能手机 –

这代码作品:

function getcategories($parent_id = 0) { 
      $categories = array(); 
      $category = array(); 
      $subcategories = array(); 
      $q = $this->db->get_where('categories', array('parent_id' => $parent_id)); 
      $results = $q->result(); 
      foreach ($results as $mainCat) { 
       $q2 = $this->db->get_where('categories', array('parent_id' => $mainCat->id)); 
       $results2 = $q2->result(); 
       foreach ($results2 as $key => $subCat) { 
        $subcategory['id']   = $subCat->id; 
        $subcategory['name']  = $subCat->name; 
        $subcategory['parentid'] = $subCat->parent_id; 
        $subcategories[$subCat->id] = $subcategory; 
       }       
       $category['id']   = $mainCat->id; 
       $category['name']   = $mainCat->name; 
       $category['parentid']  = $mainCat->parent_id; 
       $category['subcat']  = $subcategories; 
       $categories[$mainCat->id] = $category; 
       $subcategories='';     

      } 
      return $categories; 
     }