Я хочу использовать нумерацию страниц при поиске слова, и у меня есть только одна форма ввода. Моя текущая проблема заключается в том, что когда я нажимаю «Вторая страница» или «Третья страница» и т. Д., Отображается список всех данных базы данных, которые не относятся к поиску по ключевым словам.
Кто-нибудь может помочь мне решить эту проблему? Я застрял
Вот текущий код:
Контроллер
public function index() {
// If search button doesn't press
if(!isset($_POST['search'])) {
// reset the search terms session
$this->session->unset_userdata($this->tabKeyword);
// application_search is our view that contains the form
$this->displayFilm();
} else {
$keyword = $this->input->post('keyword');
if ($keyword) {
$this->tabKeyword = $keyword;
// Set keyword value into session
$this->session->set_userdata('s_keyword', $this->tabKeyword);
}
$this->displaySearchResult();
}
}
/*
* Display the search result when using keyword as search item
* @class Public
* @param void
* @return void
*/
public function displaySearchResult() {
$data['title'] = "Search Results";
// Get the third parameter defined of segment in URL
$offset = $this->uri->segment(4);
// Get total results of keyword search item
$total_results = $this->film_model->totalSearchCount($this->input->post('keyword'));
echo 'Total Results: ' . $total_results . "<br/>";
$getKeyword = $this->session->userdata('s_keyword');
echo 'Keyword session: ' . $getKeyword . "<br/>";
$config['base_url'] = base_url() . '/index.php/film_controller/displaySearchResult/' . $getKeyword;
$config['total_rows'] = $total_results; // Must return the number of keyword search result
$config['uri_segment'] = '4';
$config['per_page'] = $this->results_per_page;
// Init pagination, add results search items in searchResults array then load it in View
$this->pagination->initialize($config);
$data['searchResults'] = $this->film_model->getSearch($this->input->post('keyword'), $this->results_per_page, $offset);
$this->load->view('film_result', $data);
}
public function displayFilm() {
$total = $this->film_model->countAll();
$offset = $this->uri->segment(3);
$config['base_url'] = base_url() . '/index.php/film_controller/displayFilm';
$config['total_rows'] = $total;
$config['uri_segment'] = '3';
$config['per_page'] = $this->results_per_page;
$this->pagination->initialize($config);
$data['results'] = $this->film_model->getData($config['per_page'], $offset);
$this->load->view('film', $data);
}
Модель
function countAll() {
return $this->db->count_all('film_list');
}
public function getData($limit, $offset) {
$this->db->select('actors, title, description, category');
$query = $this->db->get('film_list', $limit, $offset);
return $query;
}
public function getSearch($keyword, $limit, $offset) {
$this->db->like('actors', $keyword);
$this->db->or_like('title', $keyword);
$this->db->or_like('category', $keyword);
$this->db->order_by('title', 'ASC');
$results = $this->db->get('film_list', $limit, $offset);
return $results->result_array();
}
/*
* @access Public
* @param keyword
* @return void
*/
public function totalSearchCount($keyword) {
$this->db->like('actors', $keyword);
$this->db->or_like('title', $keyword);
$this->db->or_like('category', $keyword);
return $this->db->count_all_results('film_list');
}