Пагинация показывает те же результаты - PullRequest
0 голосов
/ 27 февраля 2019

Использование codeigniter 3 У меня есть настройка нумерации страниц.Когда я нажимаю на следующую ссылку, я получаю те же результаты за исключением первого поста, я не могу найти причину этого.

Я попытался удалить смещение и не разрешить числа, и у меня все еще нет никаких изменений.

контроллер

public function index($offset = 0){

//Pagination
   $config['base_url'] = base_url().'posts/index/';
   $config['total_rows'] = $this->db->count_all('posts');
   $config['uri_segment'] = 3;
   $config['use_page_numbers'] = TRUE;
   $config['per_page'] = 5;
   $config['next_link'] = 'Next';
   $config['prev_link'] = 'Previous';
   $config['display_pages'] = FALSE;



   $this->pagination->initialize($config);

  $data['links']  = $this->pagination->create_links();


  $data['title'] = 'Newest';

  $data['posts'] = $this->post_model->get_posts(FALSE,$config['per_page'],$offset);


  $this->load->view('templates/header');
  $this->load->view('posts/index', $data);
  $this->load->view('templates/footer');

}

модель

public function get_posts($slug = FALSE, $limit=FALSE,$offset = FALSE){


if($limit){
  $this->db->limit($limit,$offset);
}


if($slug === FALSE){
  $this->db->order_by('created_time','DESC');
  $this->db->join('categories','categories.id = posts.category_id');
  $query = $this->db->get('posts');
  return $query->result_array();
}

$query = $this->db->get_where('posts',array('slug'=>$slug));
  return $query->row_array();

}

вид

  <ul class="pagination">

                    <?php echo $links; ?>

                  </ul>

/////////////////// ОБНОВЛЕНИЕ /////////////

Так вот как теперь выглядит мой код после обновления, как вы сказали.

public function index($offset=0){

//Pagination
   $config['base_url'] = base_url().'posts/index/';
   $config['total_rows'] = $this->db->count_all('posts');
   $config['uri_segment'] = 3;
   $config['num_links'] = 10;
   $config['per_page']=3;

  $limit = $config['per_page'];
  $offset = ($offset) * ($config['per_page']);

 this->pagination->initialize($config);


  $data['posts'] = $this->post_model->get_posts(FALSE,$limit,$offset);

в представлении у меня установлено значение

<?php echo $this->pagination->create_links(); ?>

Так что теперь проблема в том, что он показывает 3 строки (результаты), и когда я нажимаю следующий, он ничего не показываети это все, так что теперь я получаю только 3 результата только на первой странице и ни одного на следующих.Что не так?

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

если $ offset current_page_number, начиная с 0, определение должно быть:

//number of rows to get
$limit = $config['per_page'];
//where start to get it
$offset = ($offset) * ($config['per_page']);
$data['posts'] = this->post_model->get_posts(FALSE,$limit,$offset);

Если вы определите смещение как current_page, начиная с 1.

public function index($offset = 1){
......
//number of rows to get
$limit = $config['per_page'];
//where start to get it
$offset = ($offset - 1) * ($config['per_page']);
$data['posts'] = this->post_model->get_posts(FALSE,$limit,$offset);

Говоря о "Индексная функция не работает. Используйте строку запроса "...

Если у вас $ config ['enable_query_strings'] = TRUE, вы должны получить ее

public function index() {
$page = $this->input->get('page');
...
$offset = ($page - 1) * ($config['per_page']);
...

0 голосов
/ 28 февраля 2019

Функция индекса не работает Сегмент Использовать строку запроса

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...