как отображать категории, подкатегории и подкатегории — codeigniter

Мой дизайн таблицы категорий выглядит следующим образом

введите описание изображения здесь

У меня есть три уровня категории

  1. родитель
  2. ребенок
  3. суб ребенок

Как отобразить их следующим образом?

введите описание изображения здесь

(ВЫБРАТЬ * ОТ категории): я получаю следующий массив, как показано ниже

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

Решение

попробуйте следующий код
Я предполагал, что у вас есть соединение MySQL базы данных

 //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

Другие решения

Я получил выход

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

функция многоуровневых категорий должна следовать рекурсивной концепции. Вот пример с codeigniter

модель:

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

}

Вот официальная ветка форума codeigniter для
https://forum.codeigniter.com/thread-69149.html

0
По вопросам рекламы [email protected]