я это Paginate with search result реализован в мой CI проект, однако я не мог иметь мои постраничной ссылки перейти на следующую страницу, например:Codeigniter пагинация ссылка перейти на 404 Страница не найдена
моей странице поиска, когда он первый загружен http://localhost/ci_project/search
, когда я щелкнул пейджинговую ссылку, которая перейдет на http://localhost/ci_project/search/2
, страница отображается 404 Page Not Found
.
Может кто-нибудь, пожалуйста, помогите мне разобраться, что случилось в моем коде? Я пробовал много предложений по решению, но не могу помочь, большая часть проблемы исходит от $config['base_url'] = base_url('search');
, но ни одна из них не помогает.
Модель:
public function do_search_count($keywords)
{
$sql = "SELECT COUNT(*) AS cnt FROM products WHERE MATCH (name, manufacturer) AGAINST ('".$keywords."')";
$q = $this->db->query($sql);
$row = $q->row();
return $row->cnt;
}
public function do_search($keywords, $per_page, $limit)
{
$this->db->escape($keywords);
$this->db->where('MATCH (name, manufacturer) AGAINST ("'.$keywords.'") LIMIT '.$per_page.', '.$limit, NULL, FALSE);
$query = $this->db->get('products');
if($query->num_rows() > 0){
return $query->result();
}else{
return false;
}
}
Контроллер:
function search()
{
$keywords = $this->input->post('search');
$searchterm = $this->db_model->searchterm_handler($this->input->get_post('search', TRUE));
$limit = ($this->uri->segment(2) > 0)?$this->uri->segment(2):0;
$config['base_url'] = base_url('search');
$config['total_rows'] = $this->db_model->do_search_count($searchterm);
$config['per_page'] = 5;
$config['uri_segment'] = 2;
$config['use_page_numbers'] = TRUE;
$choice = $config['total_rows']/$config['per_page'];
$config['num_links'] = round($choice);
$this->pagination->initialize($config);
$data['results'] = $this->db_model->do_search(trim($keywords), $limit, $config['per_page']);
$data['pagination'] = $this->pagination->create_links();
$data['searchterm'] = $searchterm;
$data['total'] = count($data['results']);
$data['title'] = 'Search';
$this->load->view('header', $data);
$this->load->view('search', $data);
$this->load->view('footer', $data);
}
Спасибо.
это работает, но когда я иду на странице 2, никакие записи не отображается, и это происходит со страницы 2 на страницу 1 – conmen
Для этого вам нужно проверить свой запрос, что лимит и смещение установлены правильно или нет. Используйте '$ this-> db-> last_query()' для вывода вашего запроса. Подумайте о принятии ответа, если он вам поможет. –
@ Nil'z my $ this-> db-> last_query() показывает 'SELECT * FROM user_data LIMIT 5' на первой странице, но когда я нажимаю 'page 2', он перемещается в' object not found 404' :(PLS help me Чтобы решить :( –