Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
codeigniter中的自定义分页_Codeigniter_Pagination - Fatal编程技术网

codeigniter中的自定义分页

codeigniter中的自定义分页,codeigniter,pagination,Codeigniter,Pagination,我有一个codeigniter应用程序,它的分页代码就像一个符咒。分页允许访问者选择每页要查看多少记录。现在,我想补充以下几点: 显示Z记录总数中的X到Y 现在,Z很容易…我已经解决了。谁能告诉我怎么才能做到这一点 以下是我拥有的功能: public function displayAllUsers() { if ($this->uri->segment(3) !="") { $limit = $this->uri->se

我有一个codeigniter应用程序,它的分页代码就像一个符咒。分页允许访问者选择每页要查看多少记录。现在,我想补充以下几点:

显示Z记录总数中的X到Y

现在,Z很容易…我已经解决了。谁能告诉我怎么才能做到这一点

以下是我拥有的功能:

  public function displayAllUsers() 
   { 

        if ($this->uri->segment(3) !="") { 
        $limit = $this->uri->segment(3); 
        } else { 
        $limit = 10; 
        } 

        $offset = 4; 
        $offset = $this->uri->segment(4); 
        $this->db->limit($limit, $offset); 
        $data['users'] = $this->backOfficeUsersModel->get();
        $totalresults = $this->db->get('back_office_users')->num_rows();

        $this->session->set_userdata('totalresults', $totalresults);

        //initializing & configuring paging
        $this->load->library('pagination');
        $config['base_url'] = site_url('/backOfficeUsers/displayAllUsers/'.$limit.'/');
        $config['total_rows'] = $totalresults;
        $config['per_page'] = $limit;
        $config['uri_segment'] = 4;
        $config['full_tag_open'] = '<div class="dataTables_paginate paging_bootstrap pagination"><ul>';
        $config['full_tag_close'] = '</ul></div>';
        $config['cur_tag_open'] = '<li><a href=# style="color:#ffffff; background-color:#258BB5;">';
        $config['cur_tag_close'] = '</a></li>';
        $config['num_tag_open'] = '<li>';
        $config['num_tag_close'] = '</li>';

        $this->pagination->initialize($config); 

       //....irelevant content.....

    } // end of function displayAllUsers
公共函数displayAllUsers()
{ 
如果($this->uri->segment(3)!=“”){
$limit=$this->uri->segment(3);
}否则{
$limit=10;
} 
$offset=4;
$offset=$this->uri->segment(4);
$this->db->limit($limit,$offset);
$data['users']=$this->backOfficeUsersModel->get();
$totalresults=$this->db->get('back_office_users')->num_rows();
$this->session->set_userdata('totalresults',$totalresults);
//初始化和配置分页
$this->load->library('pagination');
$config['base_url']=site_url('/backOfficeUsers/displayAllUsers/'.$limit'/');
$config['total_rows']=$totalresults;
$config['per_page']=$limit;
$config['uri_segment']=4;
$config['full_tag_open']='
    '; $config['full_tag_close']='
'; $config['cur_tag_open']='
  • '; $config['num_tag_open']='
  • '; $config['num_tag_close']='
  • ; $this->pagination->initialize($config); //…I相关内容。。。。。 }//函数结束显示用户

    任何帮助都将不胜感激。

    不应该那么难。事实上,如果您理解分页,那么很明显可以得到X和Y的值

    首先,X和Y之间的差值当然等于
    $limit
    -1。X的值应等于变量
    $offset
    ,加上1(offset通常从0开始,而不是从1开始)。从这里,我确信您理解Y等于
    $offset+$limit

    $X = $offset + 1;
    $Y = $offset + $limit;
    
    如果是在最后一页,则需要确保Y的值正确。您需要检查从数据库中获取的行总数,如果它小于每页的限制,则将其更改为如下内容

    if (fetched_rows < $limit)
    {
        $Y -= ($limit - fetched_rows); 
    }
    
    if(获取的行<$limit)
    {
    $Y-=($limit-获取的行);
    }
    
    你好,凯末尔。我有12张唱片。我每页显示10条记录。在第一页上,使用上面的代码,我现在看到了:从总共12个显示1到11个。这是错误的。在下一页,它显示:显示12个总数中的11到21个,你知道如何解决这个问题吗?@Zoran My bad。我没有把一切都想清楚。我已经更新了我的答案。我把我的页码改为4,这样我可以更好地看到我得到的。更新代码后,只剩下一个小问题需要解决:因此,在第一页上,显示4条记录,阅读以下内容:从总共12条中显示1到5条(应该是1到4?还是否?)下一页阅读以下内容:从总共12条中显示5到9条,最后一页阅读以下内容:从总共12条中显示9到13条,这是错误的,我总共有12条记录。在使用$x=$offset+1更改上述代码之后$y=$offset+$limit;如果($recordsCount<$limit){$y-=($limit-$recordsCount);}像一个符咒一样工作。非常感谢。