Я создал небольшой проект, который отображает предметы одежды, которые поступают из базы данных в CodeIgniter. Данные поступают из базы данных, и она работает, и я поставил условие где проверить категорию, а где условие не работает. Вместо отображения конкретных результатов отображаются все результаты таблицы базы данных. Я передаю параметр категории через URL. Я автоматически загрузил базу данных.
Вот как я передал параметр на домашней странице, когда пользователь нажимает ссылку «Мужчины»
<a class="dropdown-item" href="<?php echo base_url();?>index.php/Products/view/mens">Men's</a>
Это контроллер
<?php
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Products extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->model('GetData');
}public function view()
{
$category_name = $this->uri->segment(3);
$this->GetData->get_data($category_name);
$result = $this->GetData->get_data();
$data['result'] = $result;
$this->load->view('products',$data);
}
}
/* End of file Products.php */
/* Location: ./application/controllers/Products.php */
?>
Это модель
<?php
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class GetData extends CI_Model {public function __construct()
{
parent::__construct();
}
public function get_data($category_name=0){
$query = $this->db->get_where('mens', array('category' => $category_name));
return $query->result();
}}
/* End of file GetData.php */
/* Location: ./application/models/GetData.php */
?>
Поля таблицы базы данных — id, категория, имя категории, img_path, имя элемента
Я использовал условие where, чтобы проверить, равна ли категория мужской и отображает ли она результаты. И в таблице есть одна строка с category = women. Но вместо отображения конкретных результатов отображаются все результаты.
Модель:
public function get_data($category_name){
$query = $this->db->get_where('mens', array('category' => $category_name));
return $query->result();
}
контроллер:
public function view()
{
$category_name = $this->uri->segment(3);
$result = $this->GetData->get_data($category_name);
$data['result'] = $result;
$this->load->view('products',$data);
}
Проверь это.
Пожалуйста, проверьте, существует ли первое значение $ category_name или нет.
// Удалить $this->GetData->get_data($category_name)
; от контроллера, как вы уже определили это снова. Не понимаю, почему вы вызываете одну и ту же функцию дважды в вашем контроллере.
Других решений пока нет …