Как создать разбиение на страницы в Codeiginter?

Я новичок в codeigniter, я пытаюсь создать разбивку на страницы записей, которые я получаю из базы данных. Я написал следующий код, который показывает мне разбиение на страницы, но не влияет на набор результатов. У меня все же есть все записи на одной странице, и когда я нажимаю на Page2 он говорит, что no page found .

Пожалуйста, помогите мне, как создать разбивку на страницы?

МОДЕЛЬ

 public function students_list() { $this->db->select('*'); $this->db->from('student'); $this->db->limit($limit,$start); $query= $this->db->get(); return $query->result(); } 

КОНТРОЛЛЕР

 public function all_students() { //Pagination $this->load->library('pagination'); $config['base_url'] = base_url().'mycontroller/all_students/'; $config['total_rows'] = 200; $config['per_page'] = 5; $this->pagination->initialize($config); echo $this->pagination->create_links(); //Pagination $this->load->model('loginmodel'); $data['students_data']= $this->loginmodel->students_list(); $data['dropdown']= $this->loginmodel->get_degree_names(); $this->load->view('all_students', $data); } 

ПОСМОТРЕТЬ

 <?php include 'header.php'; include 'sidebar.php'; $this->pagination->create_links(); ?> <?php foreach($students_data as $teachers_records) { ... .... 

контроллер:

 public function all_students() { $this->load->model('loginmodel'); $config['anchor_class'] = ''; $config['show_count'] = true; $config['base_url'] = site_url('controllername/all_students'); $config['total_rows'] = sizeof($this->loginmodel->students_list()); $data['students_data']= $this->loginmodel->students_list(); $data['dropdown']= $this->loginmodel->get_degree_names(); $config['per_page'] = 10; $this->jquery_pagination->initialize($config); $data['links'] = $this->jquery_pagination->create_links(); $data['page'] = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0; $data['details'] = $this->loginmodel->students_list($config['per_page'], $data['page']); $this->load->view('all_students', $data); } 

Модель

 public function students_list($limit=NULL,$start=NULL) { $this->db->select('*'); $this->db->from('student'); $this->db->limit($limit,$start); $query= $this->db->get(); return $query->result(); } 

вам понадобятся некоторые данные для перемещения в pagination для использования запроса для этого и $config['total_rows'] чтобы он отображал общую разбивку на результат с 5 записями

в моем случае я использую $this->Account->search_users($where,false, false,false,true,false); является модельной функцией, возвратит массив результата

 return $query->result_array(); 

контроллер: –

  $this->load->library('pagination'); $config['total_rows'] = $this->Account->search_users($where,false, false,false,true,false); $config['per_page']= 5; $config['uri_segment'] = 3; $config['base_url']= base_url().'/app/index'; $config['suffix'] = '?'.http_build_query($_GET, '', "&"); $this->pagination->initialize($config); $this->data['paginglinks'] = $this->pagination->create_links(); $this->data['per_page'] = $this->uri->segment(3); $this->data['offset'] = $offset ; 

Посмотреть:-

 <div class="pagination" style="float:right;"> <?php echo $paginglinks; ?></div> 

Для получения дополнительной информации: – http://ellislab.com/codeigniter/user-guide/libraries/pagination.html

моя модельная функция: –

 public function search_users($where = false, $num = false, $offset = false, $order_by = false, $count = false, $select = false , $table=false){ if(!$select){$select = 'U.*';} if(isset($where['where']) && !empty($where['where'])) { $this->db->where($where['where']); } if($order_by){ $this->db->order_by($order_by[0], $order_by[1]); }else{ $this->db->order_by('U.u_id', 'DESC'); } $query = $this->db->get($table . ' AS U'); //print_r($this->db->last_query()).'<hr>'; $recount = $query->num_rows; if($count) { return $recount; } if($recount > 0){ return $query->result_array(); } else{ return false; } } 

Для лучшего использования разбиения на страницы создайте функцию в вашем помощнике. Это будет очень полезно для вас в будущем. вам никогда не нужно загружать библиотеку и другие значения. исправьте эту функцию в своем помощнике.

 if( ! function_exists('createPaginationForm')) { function createPaginationForm($url, $totalRows, $perPage, $segment, $queryString = '', $config = array()) { $CI =& get_instance(); $CI->load->library('pagination'); $config['base_url'] = base_url().$url; $config['total_rows'] = $totalRows; $config['per_page'] = $perPage; $config['uri_segment'] = $segment; $CI->pagination->initialize($config); return $CI->pagination->create_links($queryString); } } 

и использовать в вашем контроллере.

 var $perPage = '10'; var $segment = '4'; $total_result = "50"; $pagination = createPaginationForm('admin/news/index/',$total_result ,$this->perPage, $this->segment); $this->data['pagination'] = $pagination; 

и напечатайте это в своем представлении.

 echo $pagination 

Прежде всего, я предлагаю создать вспомогательную функцию для настройки такой разбивки на страницы. Вы должны узнать из документа codeigniter для цели опций в config

 if (!function_exists('getPaginationConfig')) { function getPaginationConfig($url,$total_row,$per_page,$num_links=3){ $config = array(); $config['use_page_numbers'] = TRUE; $config['uri_segment'] = 3;// depends on how you passing your page number $config['base_url'] = $url; $config['total_rows'] = $total_row; $config['per_page'] = $per_page; $config['full_tag_open'] = '<ul>'; $config['full_tag_close'] = '</ul>'; $config['cur_tag_open'] = '<li class="active"><a href="">'; $config['cur_tag_close'] = '</a></li>'; $config['num_tag_open'] = '<li>'; $config['num_tag_close'] = '</li>'; $config['next_tag_open'] = '<li>'; $config['next_tag_close'] = '</li>'; $config['prev_tag_open'] = '<li>'; $config['prev_tag_close'] = '</li>'; $config['first_link'] = '&lt;&lt;'; $config['first_tag_open'] = '<li>'; $config['first_tag_close'] = '</li>'; $config['last_link'] = '&gt;&gt;'; $config['last_tag_open'] = '<li>'; $config['last_tag_close'] = '</li>'; $config['num_links'] = $num_links; return $config; } } 

Теперь на контроллере .. вам нужно получить полные строки из базы данных и установить perpage в разбивке на страницы, а вызов с помощью конфигурации здесь – пример функции контроллера

  function getMyList($page){ $limit = YOUR_PAGE_LIMIT;//may be some global variable or input from frontend $starting = ($page-1)*$limit; $data['results'] = $this->your_model->getListOfTable($where,$limit,$starting); $total_rows = $this->your_model->getTotalRowsOfTable($where);// where is filter condition $this -> load -> helper('your_helper');// where yours getPaginationConfig is defined $this -> load -> library('pagination'); $this -> pagination -> initialize(getPaginationConfig(site_url('controller/function'), $total_rows,$limit)); $data['pagination'] = $this -> pagination -> create_links(); $this->load->view('yourview',$data); 

Ваша модель может выглядеть так:

 function getListOfTable($where = array(), $limit, $starting = 0) { $this -> db -> select('*'); // <-- There is never any reason to write this line! $this -> db -> from('your_tables'); if (!empty($where)) $this -> db -> where($where); $this -> db -> limit($limit, $starting); $query = $this -> db -> get(); if ($query -> num_rows() > 0) { return $query -> result(); } else { return FALSE; } } function getTotalRowsOfTable($where = array()){ if (!empty($data)) $this -> db -> where($where); $this -> db -> from('your_table'); return $this -> db -> count_all_results(); } 

Теперь в режиме просмотра вам просто нужно повторить разбивку на страницы, где вам нравится

  <div id="pagination"><?php echo $pagination;?></div>