CodeIgniter Search Results Pagination CodeIgniter Search Results Pagination codeigniter codeigniter

CodeIgniter Search Results Pagination


There are several of different ways to handle search and pagination depending on your needs. Based on your existing code, this is what I would do.

Change

$search_term = $this->input->post('word');

to

$search_term = ''; // default when no term in session or POSTif ($this->input->post('word')){    // use the term from POST and set it to session    $search_term = $this->input->post('word');    $this->session->set_userdata('search_term', $search_term);}elseif ($this->session->userdata('search_term')){    // if term is not in POST use existing term from session    $search_term = $this->session->userdata('search_term');}


function search_books($search_term='default'){ $filter = $this->input->post('filter');//echo $filter;if($filter == 'title'){    $this->db->like('title',$search_term);} else if($filter == 'author'){    $this->db->like('author',$search_term);} else if($filter == 'type'){    $this->db->like('book_type',$search_term);}else if($filter == 'status'){    $this->db->like('book_status',$search_term);} else{    $this->db->like('book_status',$search_term);    $this->db->or_like('book_type',$search_term);    $this->db->or_like('author',$search_term);    $this->db->or_like('title',$search_term);     // Execute the query.    }    $query = $this->db->get('book');    return $query->result_array();} }

Just trying to lessen your Model code, if you don't want to use "session" and want to copy, paste link/url and get same result in your search then you should use uri class in your controller.


you can use following code in your controller all query string will show in pagination links.

$config['reuse_query_string']=TRUE;

for additional parameters in paging link you can un comment following 2 lines.

//$getData = array('s'=>$search);//$config['suffix'] = '?'.http_build_query($getData,'',"&");$this->pagination->initialize($config);