2015-09-06 158 views
0

我的類別表設計如下如何顯示類別,分類別和子子類別 - 笨

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://stackoverflow.com/questions/3116330/recursive-categories-with-a-single-query,http://stackoverflow.com/questions/2871861/how -to-build-unlimited-level-of-menu-through-php-and-mysql#3368622 – sinisake

+0

是高效的鄰接表模型嗎? –

+0

呃......對我來說比較容易,而且我迄今爲止使用過它,沒有嘗試第二種模式。有更多經驗的人可能可以提供一些關於它的信息...此外,我通常設置一個額外的列(位置)來應用自定義命令... – sinisake

回答

0

我得到了輸出

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); 
     } 
0

試試下面的代碼
我假設你有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

0

多層次類別功能應該遵循遞歸概念。下面是笨

型號的例子:通過調用這個(控制器)

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