использование разбивки на страницы с помощью codeigniter

#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;