У меня есть боковая панель с категориями. когда я нажимаю на одну категорию, это показывает мне фабрики, которые находятся в этой категории.
Я сделал это, используя объединения в codeigniter.
Теперь я хочу показать, сколько фабрик находится в категории. так например:
Categories. Cars (2) Books (7) Animals (45)
Поэтому просто показать, сколько фабрик имеет определенную категорию.
Я попытался сделать простой count_all_results, но потом я получу общее количество фабрик. но я хочу, чтобы они учитывались по конкретному идентификатору категорий.
моя модельная функция:
function categorieen_getall($segment3) { $this->db->where('categorieen.idcategorieen', $segment3); $this->db->select('*'); $this->db->from('bedrijfcategorieen'); $this->db->join('categorieen', 'categorieen.idcategorieen = bedrijfcategorieen.idcategorieen'); $this->db->join('bedrijven', 'bedrijven.idbedrijven = bedrijfcategorieen.idbedrijven'); $query = $this->db->get(); $result = $query->result(); /* echo '<pre>'; print_r($result); */ return $result; }
Моя функция контроллера:
function get_All() { $data['cat'] = $this->categorieen_model->categorieen_getall($segment3); $this->load->view('views/sidebar', $data); }
Мой взгляд:
<div id="sidebar"> <?php echo '<h3>Categorieën</h3>'; echo ($this->db->count_all_results('categorieen')); ?> <hr> <br/> <?php echo '<ul>'; if(isset($cat) && is_array($cat)){ foreach($links as $k => $value){ echo '<li>'; echo '<br>'; echo '<a href="'.base_url().'home/categorie/'.$value->idcategorieen.' ">' .$value->Categorie. '</a>'; echo '</li>'; } } echo '<ul>'; /* if(isset($cat ) && is_array($cat )){ foreach($cat as $key => $row){ echo "Categorie:"; echo $row->Categorie; echo "<br />"; echo $row->idcategorieen; echo "<br />"; echo $row->Bedrijfsnaam; } } */ ?> </div>
Моя схема базы данных:
Factories -------- idfactories factoryname adress email ... Categories ---------- idcategories Category Factorycategories ----------------- idfactorycategories idcategories idfactories
Это не совсем подходит, потому что я знаю, что есть лучший способ сделать это , но это сделает для вас работу:
// Get categories $categories = array(); $query = $this->db->query("select * from `Categories` order by `idcategories`"); if($query->num_rows() > 0) { foreach($query->result_array() as $row) { $query_count = $this->db->query("select `idfactorycategories` from `Factorycategories` where `idcategories` = {$row['idcategories']}"); $factory_count = $query_count->num_rows(); $categories[] = array( 'count' => $factory_count ); } }
Для удобства вы можете сначала получить категории в цикле foreach
а затем для каждого из них отправить запрос для таблицы factories
чтобы получить соответствующее количество фабрик с этим идентификатором категории.
Я задал еще один вопрос. с той же проблемой, и я решил это.
Посмотрите на мой собственный ответ с решением, которое я получил!
Подсчитайте результаты в объединенной таблице и покажите между () в боковой панели
Спасибо за людей, которые мне помогли 🙂