CodeIgniter pagination- does not go to the next link of search results

I use pagination to search for results. The search is excellent. 1 10 records displayed after the search. But when I click the next button, everything disappears and a blank page appears.

If anyone has an idea, give me help to figure out what is wrong in my code.

Model

function search_bookings($time, $title, $payment, $start_date, $end_date,$limit, $start, $type) { $this->db->select('reservations.*'); $this->db->from('reservations'); $this->db->where('is_deleted', '0'); $this->db->order_by('date_cal',"desc"); if (!empty($time) && !is_null($time)) { $this->db->where('reservations.type', $time); } if (!empty($payment) && !is_null($payment)) { $this->db->where('reservations.advanced_payment_status', $payment); } if (!empty($title) && !is_null($title)) { $this->db->where('reservations.title', $title); } if (!empty($start_date) && !is_null($start_date)) { $this->db->where('reservations.date_cal >=', $start_date); $this->db->where('reservations.date_cal <=', $end_date); } if ($type == 'half') { $this->db->limit($limit, $start); } $query = $this->db->get(); return $query->result(); } 

controller

  function search_reservations($start = 0) { $reservation_service = new Reservation_service(); $config = array(); $config["base_url"] = site_url() . "/dashboard/manage_bookings/"; $config["per_page"] = 10; $config["uri_segment"] = 4; $config["num_links"] = 4; $time = $this->input->post('type', TRUE); $title = $this->input->post('title', TRUE); $payment = $this->input->post('payment', TRUE); $date_from = $this->input->post('date_from', TRUE); $date_to = $this->input->post('date_to', TRUE); $searched_results = $reservation_service->search_bookings($time, $title, $payment, $date_from, $date_to, $config["per_page"], $start, 'half'); $data['search_results'] = $searched_results; $config["total_rows"] = count($reservation_service->search_bookings($time, $title, $payment, $date_from, $date_to, $config["per_page"], 0, 'all')); $this->pagination->initialize($config); $data["links"] = $this->pagination->create_links(); $this->load->view('body_pages/search_results', $data); } 

View Search Results

 <table class="display table table-bordered table-striped" id="bookings_table"> <thead> <tr> <th>#</th> <th>Date</th> <th>Hall</th> <th>Time</th> <th>Actions</th> </tr> </thead> <tbody> <?php $i = 0; foreach ($search_results as $result) { ?> <tr id="bookings_<?php echo $result->id; ?>"> <td><?php echo ++$i; ?></td> <td><?php echo $result->date_cal; ?></td> <td><?php if ("RP" == $result->title) { ?><?php echo "Royal Princess Ballroom (Downstairs)"; } ?> <?php if ("GK" == $result->title) { ?><?php echo "Grand Kings Ballroom (Upstairs)"; } ?> </td> <td><?php echo $result->type; ?></td> <td align="center"> <a class="btn btn-primary btn-xs" onclick="display_edit_reservation_pop_up(<?php echo $result->id; ?>)"><i class="fa fa-pencil" title="Update"></i></a> <a class="btn btn-danger btn-xs" onclick="delete_bookings(<?php echo $result->id; ?>)" ><i class="fa fa-trash-o " title="Remove"></i></a> </td> </tr> <?php } ?> </tbody> </table> <div class="pagination"> <?php echo $links; ?> </div> 
+6
source share
3 answers

Try to add

 $config['use_page_numbers'] = TRUE; 

And do

 $config['uri_segment'] = 4; 

For

 $config['uri_segment'] = 3; 

You may need to configure your .php routes

 $routes['dashboard/manage_bookings/(:any)'] = "dashboard/manage_bookings/$1" 

CI2 http://www.codeigniter.com/userguide2/general/routing.html

CI3 http://www.codeigniter.com/user_guide/general/routing.html

0
source

Hi, please find below controller code with pagination classes

 /* start code of pagination */ $config = array(); $config["base_url"] = base_url()."cms/manage_cms"; if (count($_GET) > 0) $config['suffix'] = '?' . http_build_query($_GET, '', "&"); if (count($_GET) > 0) $config['first_url'] = $config['base_url'].'?'.http_build_query($_GET); $page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0; //$page = 0; $config["total_rows"] = count($this->mdl_cms->getAllCmsByCondition($searchindex,$orderField,$orderby,$rowsPerPage,$page,false)); if($config["total_rows"] < $rowsPerPage){ $page = 0; } $config["per_page"] = $rowsPerPage; //$config["uri_segment"] = 3; $config['full_tag_open'] = '<div class="pagination"><ul>'; $config['full_tag_close'] = '</ul></div><!--pagination-->'; $config['first_link'] = '&laquo; First'; $config['first_tag_open'] = '<li class="prev page">'; $config['first_tag_close'] = '</li>'; $config['last_link'] = 'Last &raquo;'; $config['last_tag_open'] = '<li class="next page">'; $config['last_tag_close'] = '</li>'; $config['next_link'] = 'Next &rarr;'; $config['next_tag_open'] = '<li class="next page">'; $config['next_tag_close'] = '</li>'; $config['prev_link'] = '&larr; Previous'; $config['prev_tag_open'] = '<li class="prev page">'; $config['prev_tag_close'] = '</li>'; $config['cur_tag_open'] = '<li class="active"><a href="">'; $config['cur_tag_close'] = '</a></li>'; $config['num_tag_open'] = '<li class="page">'; $config['num_tag_close'] = '</li>'; $this->pagination->initialize($config); // Load pagination class $usersArr = $this->mdl_cms->getAllCmsByCondition($searchindex,$orderField,$orderby,$rowsPerPage,$page,true); //echo $this->db->last_query(); //die; $data["links"] = $this->pagination->create_links(); // Create pagination links 

Hope this works for you.

0
source

You take the variables $ time, $ title, $ payment, $ date_from, $ date_to from POST.

Folder associations are similar to: home / search_reservations / 2

As soon as the user clicks on these links, the search data from the message is lost. you need to save your search parameters in the record if you want them to affect all pages.

2 ways to do it -

1) use GET instead of POST. save your search parameters in the query line of your generated page links. Thus, all pages will have search options. Also useful if you want to share / tag a specific page of the search result. For example, your pages will be linked as -

 www.yoursite.com/home/search_reservations/2?time=123&title=123&payment=123&date_from=123&date_to=123 

2) save the search parameter in the session. The code is more useless, but prettier in the URL.

0
source

All Articles