0

我正在使用使用分页的codeigniter,但是当我选择每页的记录时,它会显示数据,但是当我单击下一页按钮时,默认情况下它将重定向到第3页,我们每页有25个数据字段,因此它将页面上的数据除以默认值。

这是控制器

        function search($page=0)
      {     
        // selecting per page data              
        if ($this->input->post('per_page')!='') {
                 $recordperpage = $this->input->post('per_page');
                 $per =  $this->input->post('per_page');
                 $page = $this->input->post('per_page');
                echo $this->session->userdata('per');
            } 


            else {
                $recordperpage = 25;    
            }
      $keyword = $this->input->post('keyword');

      $result['front'] = $this->search_model->search($keyword,$page,$recordperpage);

    $mypaing['total_rows']= $this->search_model->listing_num('*','tabel_name','flag',1,'keyword',$keyword);
    $mypaing['base_url']    =   base_url()."admin/h_search/search/";
    $mypaing['per_page']    =   $recordperpage;
    $mypaing['uri_segment'] =   4;      
    $this->pagination->initialize($mypaing);
    $result['recordperpage'] = $recordperpage;
    $result['paginglink']   =   $this->pagination->create_links();
    $data['page_heading']   = "Doctor Search Result";
   $data['contents'] = $this->load->view('admin/listing/search',$result,true);  

    $this->load->view('admin/template',$data);
    }`enter code here`

从搜索中获取记录的模型

 function search($keyword,$page,$recordperpage)
{    
    $sql ="SELECT * FROM tabel_name WHERE flag = 1  AND keyword LIKE '%".$keyword."%' 
    LIMIT ".$page.",".$recordperpage."" ;
    $result=$this->db->query($sql);
    return $result; 
} 
function listing_num($select,$from,$where_colum,$where,$where_colum1,$where1)
{
    $this->db->select($select);
    $this->db->from($from);
    $this->db->where($where_colum,$where);
    $this->db->where($where_colum1,$where1);


    $query=$this->db->get();
    return $query->num_rows();
}

看法

     <div class="counter">
      <input type="hidden" value="<?=$recordperpage?>" name="rpp_hidden" id="rpp_hidden" />
    <select onchange="this.form.submit();" name="per_page" id="per_page">
    <option value="25" <? if ($recordperpage == 25) {  print 'selected=selected'; }?>  >25</option>
    <option value="50" <? if ($recordperpage == 50) {  print 'selected=selected'; }?> >50</option>
    <option value="75" <? if ($recordperpage == 75) {  print 'selected=selected'; }?> >75</option>
    <option value="100" <? if ($recordperpage == 100) {  print 'selected=selected'; }?> >100</option>
    </select> per page 
  </div>

</div>

当我选择每个帖子的数据时,如果我选择每页记录 50,它将重定向到第 1 页并显示从 0 到 50 的数据

提前致谢

4

1 回答 1

0

如果不是搜索,您在哪里设置偏移量?尝试将其添加到您的 if 语句之上。如果没有 uri 段 4,比如当你第一次加载页面时,它会将你的偏移量设置为 0,如果有它将使用该段。然后,如果是搜索,您的 if 语句将覆盖它:

        $page = ($this->uri->segment(4) ? $this->uri->segment(4) : 0);
于 2013-01-31T12:46:33.633 回答