Codeigniter Pagination issue with query string - codeigniter

I have a pagination script that i made in codeigniter, and here's my script
/*---product_pagination----*/
$total_row = $this->autoload_model->get_data_from_table("td_model,td_country","*",
"td_country.country_id = td_model.model_country
AND td_model.model_id > 0
ORDER BY td_model.model_username")->num_rows();
echo $total_row;
$this->load->library('pagination');
//$start_row= $this->uri->segment(3);
$segment_3 = $this->uri->segment(3);
if($segment_3 == '')
{
$start_row = 0;
}
else
$start_row = $_REQUEST['start_row'];
if(isset($_REQUEST['per_page']))
$perpage = $_REQUEST['per_page'];
else
$perpage = 2;
if(trim($start_row) == '')
{
$start_row =0;
}
$config['base_url'] = base_url().'model/show_model/?start_row='.$start_row;
$config['total_rows'] = $total_row;
$config['per_page'] = $perpage;
$config['uri_segment'] = 3;
$config['page_query_string'] = TRUE;
$config['full_tag_open'] = "<div class='pagination'>";
$config['full_tag_close'] = '</div>';
$config['cur_tag_open'] = "<span style='width: 80px; '>";
$config['cur_tag_close'] = '</span>';
$config['first_link'] = '<< First';
$config['first_tag_open'] = "<span style='width: 80px; '>";
$config['first_tag_close'] = '</span>';
$config['last_link'] = 'Last >>';
$config['last_tag_open'] = "<span style='width: 80px; '>";
$config['last_tag_close'] = "</span>";
$config['next_link'] = 'Next >';
$config['next_tag_open'] = "<span style='width: 80px; '>";
$config['next_tag_close'] = '</span>';
$config['prev_link'] = '< Prev';
$config['prev_tag_open'] = "<span style='width: 80px; '>";
$config['prev_tag_close'] = '</span>';
$this->pagination->initialize($config);
$data['pagination'] = $this->pagination->create_links();
$data['all_model']=$this->autoload_model->get_data_from_table("td_model,td_country","*",
"td_country.country_id = td_model.model_country
AND td_model.model_id > 0
ORDER BY td_model.model_username")->result_array();
$data['model_list']=$this->autoload_model->get_data_from_table("td_model,td_country","*",
"td_country.country_id = td_model.model_country
AND td_model.model_id > 0
ORDER BY td_model.model_username
LIMIT $start_row, $perpage")->result_array();
/*$this->product_model->products_fragment_by_category($cat_slug,$start_row,$perpage);*/
/*----pagination ends------*/
$this->load->view('header',$data);
$this->load->view('header_lower');
$this->load->view('model_list');
$this->load->view('left_bar');
$this->load->view('footer');
}
the issue is that i am getting this url
http://localhost/ecam/model/show_model/?start_row=0&per_page=2
http://localhost/ecam/model/show_model/?start_row=0&per_page=4
why is that per_page getting extended to 2 4 6...
it seems that start_row value is getting as the per_page value;

Note that "per_page" is the default query string passed, however can be configured using
$config['query_string_segment'] = 'offset';//you change per_page param-name to offset
http://ellislab.com/codeigniter/user-guide/libraries/pagination.html
per_page in query parameter is offset
per_page in config is limit

Related

CodeIgniter Pagination Links removed after like query executes

`
Controller :
$page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0;
$config = array();
$config['base_url'] = base_url().'tr_admin/billmanagement/';
$config['total_rows'] = $this->bill_model->count_all_bill($this->session->userdata('searchBillRec'));
$config['per_page'] = 100;
$config['use_page_numbers'] = TRUE;
$config["uri_segment"] = 3;
$config['full_tag_open'] = '<ul class="pagination">';
$config['full_tag_close'] = '</ul>';
$config['use_page_numbers'] = FALSE;
$config['next_link'] = 'Next';
$config['next_tag_open'] = '<li class="next page">';
$config['next_tag_close'] = '</li>';
$config['prev_link'] = ' 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>';
$data['recList'] = $this->bill_model->get_bill($config["per_page"],$page,$this->session->userdata('searchBillRec'));
$this->pagination->initialize($config);
$data['main_content'] = 'tr_admin/billmanagement';
$this->load->view('tr_admin/includes/template', $data);
Model:
if($filterData['bill_to']!=''){
$this->db->like('bill_to', $filterData['bill_to'],'both');
}
$this->db->order_by("bill_id","DESC");
$this->db->limit($per_page,$page);
return $this->db->get()->result_array();
`
Pagination links only show when there's more results than the current offset you set. So if there's only 5 records and your offset is 10 then there's no pagination to do.

Getting the same data on pagination in Codeigniter

I am getting the same data when I am clicking on the next button of pagination in CodeIgniter with the following code
public function view($slug){
$data['title']= $slug;
$data['description']= "None";
$postdatacount = $this->Constant_model->snippettagscount($slug);
$checktags= $this->Constant_model->gettags($slug);
if($checktags>0){
if ($postdatacount>0) {
$config = array();
$config["base_url"] = base_url() ."tags/".$slug;
$config["total_rows"] = $postdatacount;
$config["per_page"] = 6;
$config["uri_segment"] = 2;
$config['full_tag_open'] = '<ul class="pagination">';
$config['full_tag_close'] = '</ul>';
$config['first_link'] = false;
$config['last_link'] = false;
$config['first_tag_open'] = '<li>';
$config['first_tag_close'] = '</li>';
$config['prev_link'] = '&laquo';
$config['prev_tag_open'] = '<li class="prev">';
$config['prev_tag_close'] = '</li>';
$config['next_link'] = '&raquo';
$config['next_tag_open'] = '<li>';
$config['next_tag_close'] = '</li>';
$config['last_tag_open'] = '<li>';
$config['last_tag_close'] = '</li>';
$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>';
$this->pagination->initialize($config);
$page = ($this->uri->segment(2)) ? $this->uri->segment(2) : 0;
$data["links"] = $this->pagination->create_links();
$data["title"] = "All Tags";
$data["description"] = "All Tags";
$data['snippets_tags'] = $this->Constant_model->get_tags($config["per_page"],$page,$slug);
$this->snippetfunctions->add_count('tags','tag_name',$slug);
$this->load->view('view_tag_snippets', $data);
}else {
$data["title"] = "No Snippet Found for this Tag";
$data["description"] = "No Snippet Found for this Tag";
$data["slug"] =$slug;
$this->load->view('error_tags',$data);
}
}else{
$this->load->view('404',$data);
}
}
Primary URL Made on this function is
http://127.0.0.1/Mytredin_codesup/tags/user-interface
When I am clicking on Next button following URL is made but not loading the next data but loading the same data and the same thing happens on every next page.
http://127.0.0.1/Mytredin_codesup/tags/user-interface/1
Routes I am using is
$route['tags/(:any)/(:num)'] = 'tags/view/$1/$2';
$route['tags/(:any)'] = 'tags/view/$1';
The problem is with the config $config["uri_segment"] = 2;, according to your routing the page variable is at segment 3.
Use $config["uri_segment"] = 3; instead of $config["uri_segment"] = 2;. Also change the line $page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0;
More details read

pagination doesn't work in codeigniter

I made an optional search that makes the user search with username or customer or date from/to the result returning well to the first page but if I click on another page the result return nothing
this my front and all that input optional
i think the problem the pagination path because if i fill all inputs the pagination path become
controllername/userid/customerid/fromdate/todate
and if skip any input I find the pagination path is missing that
this my controller
public function search($page_num = 1){
$this->load->library('pagination');
$this->load->helper("url");
$this->load->model(array('CustomReport_m','user','Customer_m')); // This array to save number of lines only
$username=$this->input->post('select_user');
$username = ($this->uri->segment(3)) ? $this->uri->segment(3) : $username;
$customer=$this->input->post('select_customer');
$customer = ($this->uri->segment(4)) ? $this->uri->segment(4) : $customer;
$datefrom=$this->input->post('from');
$datefrom = ($this->uri->segment(5)) ? $this->uri->segment(5) : $datefrom;
$dateend=$this->input->post('to');
$dateend = ($this->uri->segment(6)) ? $this->uri->segment(6) : $dateend;
$total_row = $this->CustomReport_m->search_count($username,$customer,$datefrom,$dateend);
//$config['use_page_numbers'] = TRUE;
$config['base_url'] = site_url("CustomReport/search/$username/$customer/$datefrom/$dateend");
$config['total_rows'] = $total_row;
$config['per_page'] = 10;
$choice = $config["total_rows"]/$config["per_page"];
$config["num_links"] = floor($choice);
$config['full_tag_open'] = '<ul class="pagination">';
$config['full_tag_close'] = '</ul>';
$config['first_link'] = false;
$config['last_link'] = false;
$config['first_tag_open'] = '<li>';
$config['first_tag_close'] = '</li>';
$config['prev_link'] = '&laquo';
$config['prev_tag_open'] = '<li class="prev">';
$config['prev_tag_close'] = '</li>';
$config['next_link'] = '&raquo';
$config['next_tag_open'] = '<li>';
$config['next_tag_close'] = '</li>';
$config['last_tag_open'] = '<li>';
$config['last_tag_close'] = '</li>';
$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>';
$this->pagination->initialize($config);
if ($this->uri->segment(7)) {
$page = ($this->uri->segment(7));
} else {
$page = 1;
}
$str_links = $this->pagination->create_links();
$data["links"]= explode(' ', $str_links);
$data['users']=$this->user->display_users();
$data['userdata'] = $this->user->userdata();
$data['customers']= $this->Customer_m->index();
// if(isset($_POST['submit'])){
$data["rsl"] =$this->CustomReport_m->search($username,$customer,$datefrom,$dateend,$config["per_page"],$page);
$this->load->view('customreport_v',$data);
// }else{
// redirect('CustomReport','refresh');
// }
}
This is my model
public function search_count($username,$customer,$datefrom,$dateend) {
$this->db->select('*');
$this->db->from('transactions');
if (!empty($customer)){
$this->db->where('t_customer_id',$customer);
}
if (!empty($username)){
$this->db->where('t_u_id',$username);
}
if (!empty($dateend)){
$this->db->where('t_date <=',$dateend);
}
if (!empty($datefrom)){
$this->db->where('t_date >=',$datefrom);
}
return $this->db->get()->num_rows();
}
public function search($username,$customer,$datefrom,$dateend,$limit,$start)
{
$start=$start-1;
$this->db->select('*');
$this->db->from('transactions');
if (!empty($customer)){
$this->db->where('t_customer_id',$customer);
}
if (!empty($username)){
$this->db->where('t_u_id',$username);
}
if (!empty($dateend)){
$this->db->where('t_date <=',$dateend);
}
if (!empty($datefrom)){
$this->db->where('t_date >=',$datefrom);
}
$this->db->limit($limit,$start);
$query=$this->db->get();
if($query->num_rows() > 0){
return $query->result();
}else{
return $query->result();
}
}
this my route
$route['CustomReport/(:num)']="CustomReport/index/$1";

Codeigniter: When i do search the pagination page still remains

I have a problem when i do search the pagination number still remains in the url result to showing no resuts. for example when i click a pagination link my url looks like this example/index.php/example/info/10 then when i do search, the url now the url looks like this example/index.php/example/info/10?search=word
How can i fixed this problem
Controller
public function info($offset=0)
{
$this->load->library('pagination');
$search = $this->input->get('search');
$page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0;
if($this->input->get('search')){
$count = $this->ticketing_mdl->count_all_ticket();
$config['total_rows'] = $count;
$config['suffix'] = '?' . http_build_query($_GET, '', "&");
$config['base_url'] = "/ticketing/index.php/ticketing/info";
$config['first_url'] = "/ticketing/index.php/ticketing/info?search=$search";
}else{
$this->db->where('is_valid','1');
$config['total_rows'] = $this->db->count_all_results('db_ticketing.tr_ticket');
$config['base_url'] = "/ticketing/index.php/ticketing/info";
}
$limit = 10;
$config['per_page'] = $limit;
$config['num_links'] = $limit;
$config['full_tag_open'] = '<div><ul class="pagination pagination-centered">';
$config['full_tag_close'] = '</ul></div>';
$config['num_tag_open'] = '<li>';
$config['num_tag_close'] = '</li>';
$config['cur_tag_open'] = "<li class='disabled'><li class='active'><a href='#'>";
$config['cur_tag_close'] = "<span class='sr-only'></span></a></li>";
$config['next_tag_open'] = "<li>";
$config['next_tagl_close'] = "</li>";
$config['prev_tag_open'] = "<li>";
$config['prev_tagl_close'] = "</li>";
$config['first_tag_open'] = "<li>";
$config['first_tagl_close'] = "</li>";
$config['last_tag_open'] = "<li>";
$config['last_tagl_close'] = "</li>";
$config['first_link'] = 'First';
$this->pagination->initialize($config);
$data['pagination'] = $this->pagination->create_links();
$data['ticket_list'] = $this->ticketing_mdl->get_all_ticket($limit,$page, $offset);
$this->load->view('ticketing/header');
$this->load->view('ticketing/left_menu');
$this->load->view('ticketing/info',$data);
}
Let me know if i am right.
I think you can control it by defining routes.
Set your $config['base_url'] of pagination library like example/index.php/search and define routes (application/config/routes.php) like
$route['search'] = "example/info";
$route['search/(:num)'] = "example/info/$1";
comment this $config['first_url'] = "/ticketing/index.php/ticketing/info?search=$search";
And dont forget to set the html form action="echo site_url('search');" method="get"
I hope this will give you some help.

codeigniter pagination links doesnt work properly

I am using Codeigniter library pagination for my search.The problem is even if i have 2 results from the database table,clicking the next or previous link shows only one result.
code :
controller
function search()
{
$this->load->library('pagination');
$perpage =1;
$page = 1;
$search_content = $this->input->get('con_search');
$data->search = $this->public_model->search_content($search_content, $perpage);
$total = count($this->public_model->search_content($search_content));
$config['base_url'] = current_url()."?con_search=".$search_content;
$config['total_rows'] = $total;
$config['per_page'] = 1;
$config['cur_page'] = $page;
$config['use_page_numbers'] = TRUE;
$config['query_string_segment'] = "page";
$config['display_pages'] =TRUE;
$config['page_query_string'] = TRUE;
$config['cur_tag_open'] = '<span class="current">';
$config['cur_tag_close'] = '</span>';
$config['next_link'] = 'Next';
$config['prev_link'] = 'Previous';
$config['prev_tag_open'] = '<span class="prevtag">';
$config['prev_tag_close'] = '</span>';
$config['next_tag_open'] = '<span class="nexttag">';
$config['next_tag_close'] = '</span>';
$this->pagination->initialize($config);
$data->footer = $this->public_model->get_footer();
$this->load->helper('text');
$this->load->view('header', $data);
$this->load->view('search');
$this->load->view('footer');
}
model:
function search_content($search_txt, $perpage = 0)
{
if($perpage){
$this->db->limit($perpage);
}
$this->db->select('title, description, alias');
$this->db->where('status', 'yes');
$this->db->like('description', $search_txt);
$res = $this->db->get('tbl_content')->result_array();
return $res;
}
view :
if($search && is_array($search)) {
foreach($search as $ind=>$val)
{
$this->db->select('menu_type_id');
$this->db->where('menu_alias', $val['alias']);
$res = $this->db->get('tbl_menu')->row_array();
if($res) {
if($res['menu_type_id'] == 2)
$url = site_url('page/'.$val['alias']);
else
$url = site_url('page/footer/'.$val['alias']);
}
?>
<div class="box_1">
<div class="deal_contents">
<div class="bx_0"><?php echo $val['title'] ?></div>
<div class="bx_1" style="width:670px;"><?php echo strip_tags(character_limiter($val['description'],200)) ?></div>
<div class="bx_2" style="text-align:right; width:640px;">Read More</div>
</div>
</div>
<?php
}
echo $this->pagination->create_links();
}
thanks in advance
Do like this
$this->load->library('pagination');
$limit = 10;
$total = $this->legend_model->get_legend_count($language_id);
$config['base_url'] = base_url().'legend/index/';
$config['total_rows'] = $total;
$config['per_page'] = $limit;
$config['uri_segment'] = 3;
$config['first_link'] = '<< First';
$config['last_link'] = 'Last >>';
$config['next_link'] = 'Next ' . '>';
$config['prev_link'] = '<' . ' Previous';
$config['num_tag_open'] = '<span class="number">';
$config['num_tag_close'] = '</span>';
$config['cur_tag_open'] = '<span class="current"><a href="#">';
$config['cur_tag_close'] = '</a></span>';
$this->pagination->initialize($config);
$data['offset'] = $offset;
$data['legends'] = $this->legend_model->get_legend($language_id, $limit, $offset);
$this->template->write('title', 'Legend : Manage Legend');
$this->template->write_view('content', 'legend/index', $data);
$this->template->render();

Resources