CodeIgniter Pagination - PullRequest
       2

CodeIgniter Pagination

0 голосов
/ 25 июля 2011

Я после некоторой помощи с разбивкой по страницам codeIgniter (исправить ошибку) .. Я вижу количество записей и ссылку на пагинацию в представлении, но при нажатии на следующую ссылку не отображаются следующие / предыдущие 10 записей.Может кто-нибудь, пожалуйста, помогите мне с этим?

В моем контроллере есть следующий код

function customerlist_pagination()
{
  $search = $this->input->post('search');
  $data['title'] = "Customer Clist";
  $data['heading'] = "List of customers";
  $data['result'] = $this->customers_model->getAllcustomers_pagination($search_para, FALSE, "limit_rows");
  $data['num_recs'] = $this->customers_model->getAllcustomers_pagination($search_para, FALSE, "num");
  $config['base_url'] = base_url().'index.php/customer/customerlist_pagination/';
  $config['total_rows'] = $data['num_recs'];
  $config['per_page'] = 10;
  $config['uri_segment'] = 3;
  $config['next_link'] = 'Next >';
  $config['prev_link'] = '< Previous ';
  $this->pagination->initialize($config);
  $this->load->view('customer_view_table',$data);
}

В этой модели у меня есть следующий код:

function getAllSeizures_pagination($search_para, $archive_search = FALSE, $result_type)
{   
    $search_para = $search_para."%";
    $selected_fields = "customer.firstName
    customer.lastName, customer.address,
    customer.city, customer.postcode";
    $from = "customer";     
    $where = "customer.deleted=0 ";
    if ($archive_search == TRUE) {
      $where .= "AND customer.archived= 1 ";
    }else{
       $where .= "AND customer.archived= 0 ";
    }
    $where .= "AND (customer.firstName LIKE '$search_para' OR customer.postcode LIKE '$search_para' OR customer.city LIKE '$search_para')";
    $query =  $this->db->select($selected_fields, false)
                    ->from($from)
                    ->where($where)    
                    ->order_by('customer.idcustomer', 'desc');

   if($result_type == "limit_rows") 
   {
      $query = $this->db->limit(10, 0)
                        ->get();
      $query =  $query->result();
   }

    if($result_type == "num") {
         $query = $this->db->get();
    $query = $query->num_rows();
   }

   return $query;
}

Большое спасибо

С уважением Prats

1 Ответ

0 голосов
/ 08 августа 2011

Класс пагинации передает вам смещение в указанном сегменте uri_segment.Поскольку вы установили его на 3, вы должны записать эту информацию в первую переменную вашего метода контроллера, например:

function customerlist_pagination( $offset )
{
}

Затем, когда вы вызываете ваш $this->customers_model->getAllcustomers_pagination(), вы должны передать его $offset, так что позже в вашем коде, где вы ограничиваете свои результаты:

$query = $this->db->limit(10, 0)->get();

вы должны вместо этого использовать $offset для ограничения ваших результатов:

$query = $this->db->limit(10, $offset)->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...