#php #codeigniter #pagination
#php #codeigniter #разбивка на страницы
Вопрос:
Разбивка на страницы не работает в моем проекте, и ничего не было показано (нет разбивки на страницы — 1,2,3, … и я получаю полные результаты из базы данных).
Вот мой контроллер:
public function list_result()
{
$this->run_cache();
$this->initialize_limit();
$limit = (is_int($this->uri->segment(2)))?$this->uri->segment(2):0;
$offset = $this->result_limit;
$query = "SELECT title,user_photo,id,created_date
FROM result";
$query .= " LEFT JOIN users ON result.user_id = users.user_id ";
if ($this->uri->segment(2) == 'popular') {
$this->session->set_userdata('filterQuery', " ORDER BY result.id DESC ");
}
$query .= " WHERE state = 1";
$query .= $this->filter_query();
if (!$this->session->userdata('filterQuery')) {
$query .= " ORDER BY created_date DESC ";
}
$query .= " LIMIT " . $limit . "," . $offset;
$grow['result'] = $this->db->query($query)->result();
$this->load->library('pagination');
$config['base_url'] = base_url() . "site";
$config['total_rows'] = count($grow['result']);
$config['per_page'] = $this->result_limit;
$config['uri_segment'] = 2;
$config['full_tag_open'] = '<ul class="uk-pagination">';
$config['full_tag_close'] = '</ul>';
$config['num_tag_open'] = '<li>';
$config['num_tag_close'] = '</li>';
$config['cur_tag_open'] = '<li class="uk-active"><span>';
$config['cur_tag_close'] = '</span></li>';
$config['use_page_numbers'] = TRUE;
$this->pagination->initialize($config);
$grow['links'] = $this->pagination->create_links();
$grow['site'] = $this;
$this->load->view('share/list_result', $grow);
}
Мое мнение:
<?php
if (count($result) > 0) {
?>
<?php
foreach ($result as $row) {
?>
show results here
<?php
}
?>
<p><?php echo $links; ?></p> <!-- Nothing shown here -->
<?php } else { ?>
No Result Found
<?php
}
?>
Можете ли вы помочь мне найти, где я допустил здесь false?
Комментарии:
1.
print_r($result)
просматривайте и проверяйте, какой результат вы получаете2. $config[‘total_rows’] = count($grow[‘result’]); // ошибка, здесь вам нужно указать общее количество данных (без ограничений)
3. проверьте, что установленный вами лимит не работает в вашем запросе.
4. @MayankVadiya Я получаю все результаты из базы данных … нет разбивки на страницы.
5. @Rijin Теперь я получаю номера нумерации страниц 1,2,3,4, но когда я меняю страницу, я получаю полные результаты без изменений.
Ответ №1:
Вот как я обработал, чтобы решить проблему. Для пользователей, у которых такая же проблема, и которые гуглили здесь.
Я изменил:
$limit = (is_int($this->uri->segment(2)))?$this->uri->segment(2):0;
Для
$limit = (is_numeric($this->uri->segment(2)))?($this->uri->segment(2) - 1):0;