Как реализовать пагинацию на странице поиска?

0

Доброго времени суток! Решил я закончить все страницы проекта, но как бы не бился над пагинацией в поиске, пока она не работает должным образом. У меня создаётся впечатление, что $row_count задаёт лимит вывода данных из базы данных, поскольку даже в строке найдено выдает то же число, что и заданное в данной переменной. Количество кнопок изменяется, но если уходить с первой страницы выдаёт "найдено 0" ну и соответсвенно нет результата поиска. Что нужно подправить?

Модель:

<?php
class Search_Model extends CI_Model{
	public function search($q, $row_count, $offset){
		$array_search = array(
			'name' => $q,
			'descriptions' => $q
			);

		$query = $this->db
			->or_like($array_search)
			->get('movie', $row_count, $offset);

		return $query->result_array();
	}

	public function show($q){
		$array_search = array(
			'name' => $q,
			'descriptions' => $q
			);

		$query = $this->db
			->or_like($array_search)
			->limit(100)
			->get('movie');

		return $query->result_array();
	}


}

Контроллер:

<?php 

defined('BASEPATH') OR exit('No direct script asses allowed');

class Search extends MY_Controller {
	public function __construct(){
		parent::__construct();
	}

	public function index($slug = NULL) {
		$this->data['title'] = "Поиск";

		$this->load->library('pagination');

		$this->data['search_result'] = null;

		$offset = (int) $this->uri->segment(3);

		$row_count = 10;

		$count = 0;

		$this->load->model('search_model');
		$this->data['search_result'] = array();

		if($this->input->get('q_search')) { //получаем гет запрос из формы 
			$count = count($this->search_model->show($this->input->get('q_search')));
			$p_config['base_url'] = '/search/?q_search='.$this->input->get('q_search').'/';
			$this->data['search_result'] = $this->search_model->search($this->input->get('q_search'), $row_count, $offset);
		}else{
			show_404();
		}
		$this->data['count'] = $count;

		$p_config['total_rows'] = $count;
		$p_config['per_page'] = $row_count;
		

		$p_config['full_tag_open'] = "<ul class='pagination'>";
		$p_config['full_tag_close'] ="</ul>";
		$p_config['num_tag_open'] = '<li>';
		$p_config['num_tag_close'] = '</li>';
		$p_config['cur_tag_open'] = "<li class='disabled'><li class='active'><a href='#'>";
		$p_config['cur_tag_close'] = "<span class='sr-only'></span></a></li>";
		$p_config['next_tag_open'] = "<li>";
		$p_config['next_tagl_close'] = "</li>";
		$p_config['prev_tag_open'] = "<li>";
		$p_config['prev_tagl_close'] = "</li>";
		$p_config['first_tag_open'] = "<li>";
		$p_config['first_tagl_close'] = "</li>";
		$p_config['last_tag_open'] = "<li>";
		$p_config['last_tagl_close'] = "</li>";

		//Инициализируем пагинацию
		$this->pagination->initialize($p_config);
		$this->data['pagination'] = $this->pagination->create_links();
		

		$this->load->view('templates/header', $this->data);
		$this->load->view('search', $this->data);
		$this->load->view('templates/footer');
	}
}
codeigniter

1 ответов

0

В последнем уроке есть исходный код с реализованной пагинацией в поиске

Sign up or Log in to write an answer