如何显示类别,分类别和子子类别 - 笨

如何显示类别,分类别和子子类别 - 笨

问题描述:

我的类别表设计如下如何显示类别,分类别和子子类别 - 笨

enter image description here

我有三个层次类别

  1. 孩子
  2. 子小孩

如何以下列方式显示它们?

enter image description here

(SELECT * FROM类别):我得到下面的数组如下

Array 
(
    [0] => stdClass Object 
     (
      [category_id] => 1 
      [category_slug] => 
      [category_glyphicon] => live glypicon 
      [category_name] => Live 
      [is_parent] => 0 
      [is_child] => 0 
      [is_sub_child] => 0 
      [rf_flag] => 0 
      [status] => 1 
      [category_description] => 
      [created_on] => 2015-09-04 10:47:54 
      [updated_on] => 2015-09-05 22:48:01 
     ) 

    [1] => stdClass Object 
     (
      [category_id] => 2 
      [category_slug] => 
      [category_glyphicon] => dddd 
      [category_name] => work 
      [is_parent] => 0 
      [is_child] => 0 
      [is_sub_child] => 0 
      [rf_flag] => 0 
      [status] => 1 
      [category_description] => 
      [created_on] => 2015-09-04 11:41:18 
      [updated_on] => 2015-09-04 11:11:18 
     ) 

    [2] => stdClass Object 
     (
      [category_id] => 3 
      [category_slug] => 
      [category_glyphicon] => mmm 
      [category_name] => enjoy 
      [is_parent] => 0 
      [is_child] => 0 
      [is_sub_child] => 0 
      [rf_flag] => 0 
      [status] => 1 
      [category_description] => 
      [created_on] => 2015-09-04 11:41:52 
      [updated_on] => 2015-09-04 11:12:51 
     ) 

    [3] => stdClass Object 
     (
      [category_id] => 4 
      [category_slug] => 
      [category_glyphicon] => mmm 
      [category_name] => for sale 
      [is_parent] => 1 
      [is_child] => 0 
      [is_sub_child] => 0 
      [rf_flag] => 0 
      [status] => 1 
      [category_description] => 
      [created_on] => 2015-09-04 11:42:59 
      [updated_on] => 2015-09-04 11:12:59 
     ) 

    [4] => stdClass Object 
     (
      [category_id] => 5 
      [category_slug] => 
      [category_glyphicon] => ccccc 
      [category_name] => for rent 
      [is_parent] => 1 
      [is_child] => 0 
      [is_sub_child] => 0 
      [rf_flag] => 0 
      [status] => 1 
      [category_description] => 
      [created_on] => 2015-09-05 12:13:48 
      [updated_on] => 2015-09-04 11:43:48 
     ) 

    [5] => stdClass Object 
     (
      [category_id] => 6 
      [category_slug] => 
      [category_glyphicon] => sss 
      [category_name] => villas 
      [is_parent] => 4 
      [is_child] => 1 
      [is_sub_child] => 0 
      [rf_flag] => 0 
      [status] => 1 
      [category_description] => 
      [created_on] => 2015-09-05 12:14:57 
      [updated_on] => 2015-09-04 11:44:57 
     ) 

) 
+0

官方笨论坛主题基本上,你有处理分层数据时采用两种方式/两种数据库设计:http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/并且,t您可以检查一些类别显示的解决方案:http://*.com/questions/3116330/recursive-categories-with-a-single-query,http://*.com/questions/2871861/how -to-build-unlimited-level-of-menu-through-php-and-mysql#3368622 – sinisake

+0

是高效的邻接表模型吗? –

+0

呃......对我来说比较容易,而且我迄今为止使用过它,没有尝试第二种模式。有更多经验的人可能可以提供一些关于它的信息...此外,我通常设置一个额外的列(位置)来应用自定义命令... – sinisake

我得到了输出

public function get_dt_data() 
     { 
      error_reporting(1);  
      // data is loading into $list 
      $list = $this->category1_model->get_datatables(); 
      $parenrarray=array(); 

      foreach($list as $k){ 
       $parenrarray[$k->category_id]=$k->category_name; 
      } 

      //echo '<pre>';print_r($list);echo'</pre>';; 
      //echo '<pre>';print_r($parenrarray);echo'</pre>';exit(); 


      $data = array(); 
      $no = $_POST['start']; 
      foreach ($list as $p) { 
       $no++; 
       $row = array(); 

       $row[] = "<input type='checkbox' class='deleteRow' value='".$row['category_id']."' /> #".$no ; 
       $row[] = $p->category_id; 

       // DISPLAY TABLE HIERARCHY ---- 
       $y=($p->is_parent !=0)?$parenrarray[$p->is_parent]:$p->category_name; 
       $x=$p->is_child !=0 ?$parenrarray[$p->is_child]:($p->is_parent !=0 ?$p->category_name:'0'); 
       $z=$p->is_child !=0 ?$p->category_name:'0'; 

       $row[] = "<a href='".base_url()."admin/category/level1/$p->category_name'>".$y.'</a>'; 
       $row[] = "<a href='".base_url()."admin/category/level1/$p->category_name'>".$x.'</a>'; 
       $row[] = "<a href='".base_url()."admin/category/level1/$p->category_name'>".$z.'</a>'; 

       // DATA ACTIONS------- 
       $row[] = '<a class="btn btn-xs btn-primary" href="javascript:void()" title="Edit" onclick="edit_person('."'".$p->category_id."'".')"> 
         <i class="glyphicon glyphicon-pencil"></i> Edit</a> 
         <a class="btn btn-xs btn-danger" href="javascript:void()" title="Hapus" onclick="delete_person('."'".$p->category_id."'".')"> 
         <i class="glyphicon glyphicon-trash"></i> Delete</a>'; 
       $data[] = $row; 

      } 

      $output = array(
          "draw" => $_POST['draw'], 
          "recordsTotal" => $this->categories->count_all(), 
          "recordsFiltered" => $this->categories->count_filtered(), 
          "data" => $data, 
        ); 
      //output to json format 
      echo json_encode($output); 
     } 

试试下面的代码
我假设你有mysqli的数据库连接

//assuming db connction with mysqli 

$res=$db->query("select * from categories"); 
if($res){ 
    echo "<table>"; 
    echo "<tr>"; 
    echo "<td>A</td><td>B</td><td>C</td><td>D</td>"; 
    echo "</tr>"; 
    $index = 1; 
    while($row = $res->fetch_array()){ 

     echo "<td>".$index."</td>";   

     if($row['is_parent']>0){ 
      echo "<td>".$row['category_name']."</td>";   
      echo "<td>0</td>";   
      echo "<td>0</td>";   
     }else if($row['is_child']>0){ 
      echo "<td>0</td>";  
      echo "<td>".$row['category_name']."</td>";   
      echo "<td>0</td>";   
     }else if($row['is_sub_child']>0){ 
      echo "<td>0</td>";   
      echo "<td>0</td>";   
      echo "<td>".$row['category_name']."</td>";   
     } 

     $index++; 
    } 
    echo "</table>"; 
    }else{ 
     echo $db->error; 
    } 
+0

我试着按照你的建议,但没有得到所需的输出.. 我已经在我的代码做了一些改变..请检查并建议... –

+0

我应该写任何加入?而不是(SELECT * FROM categories)?? –

+0

如何区分父类,子类和sub_child,在你的数组中,前3条记录是有is_parent = is_child = is_sub_child = 0,其中这3条记录应放置 – alamnaryab

多层次类别功能应该遵循递归概念。下面是笨

型号的例子:通过调用这个(控制器)

public function get_categories(){ 

    $this->db->select('*'); 
    $this->db->from('categories'); 
    $this->db->where('parent_id', 0); 

    $parent = $this->db->get(); 

    $categories = $parent->result(); 
    $i=0; 
    foreach($categories as $p_cat){ 

     $categories[$i]->sub = $this->sub_categories($p_cat->cat_id); 
     $i++; 
    } 
    return $categories; 
} 

public function sub_categories($id){ 

    $this->db->select('*'); 
    $this->db->from('categories'); 
    $this->db->where('parent_id', $id); 

    $child = $this->db->get(); 
    $categories = $child->result(); 
    $i=0; 
    foreach($categories as $p_cat){ 

     $categories[$i]->sub = $this->sub_categories($p_cat->cat_id); 
     $i++; 
    } 
    return $categories;  
} 

public function categories(){ 

    $this->load->model('model_categories'); 
    $data = $this->model_categories->get_categories(); 
    print_r($data); 

} 

这里是 https://forum.codeigniter.com/thread-69149.html