Php Codeigniter分页第一页始终是当前页

Php Codeigniter分页第一页始终是当前页,php,codeigniter,pagination,Php,Codeigniter,Pagination,这件事让我毛骨悚然。我正在使用CodeIgniters分页库,现在它总是作为当前页面粘贴在第1页上。我已经检查了一大堆StackOverflow问题,我没有和其他人一样的问题 这是我的url结构 website.com/leaders/page/[page_number] 这是我的控制器中的分页代码 $this->load->library('pagination'); $config['per_page'] = $query_config['limit'];

这件事让我毛骨悚然。我正在使用CodeIgniters分页库,现在它总是作为当前页面粘贴在第1页上。我已经检查了一大堆StackOverflow问题,我没有和其他人一样的问题

这是我的url结构

website.com/leaders/page/[page_number]
这是我的控制器中的分页代码

    $this->load->library('pagination');

    $config['per_page'] = $query_config['limit'];
    $config['base_url'] = base_url() . 'leaders/page/';
    $config['total_rows'] = 2000; // I actually use a function for this number
    $config['full_tag_open'] = '<div id="paginate">';
    $config['full_tag_close'] = '</div>';
    $config['first_link'] = '&laquo; First';
    $config['last_link'] = 'Last &raquo;';
    $config['use_page_numbers'] = true;
    $config['uri_segment'] = 3;

    $this->pagination->initialize($config);
我使用
$this->uri->segment(3)
获取数据库查询的页码,以便页码位于正确的段中。为了再次检查,我将
$config['uri_segment']
值设置为1,2,3,4,5,6以确保正确

我在写这篇文章时发现了这个问题,但我仍然感到困惑

然后我想可能是url本身出了问题,因为我有一条路径将其指向控制器中的index方法。下面是我的路由文件的外观

routes.php

$route['leaders/page/(:num)'] = 'leaders/index';
$route['leaders/page'] = 'leaders/index';
然后,我尝试设置分页配置的base_url,将其直接发送到索引,如下所示:

$config['base_url'] = base_url . 'leaders/index';
现在它似乎工作正常。但是我如何使它与我以前的url结构一起工作呢?我只是觉得它看起来更好,我不需要控制器中的方法来实现这一点。我的routes.php文件中是否存在冲突


谢谢在你的代码中使用它,希望它能起作用-

if ($this->uri->segment(3) > 0) {
     $offset = $this->uri->segment(3) * $config['per_page'] - $config['per_page'];
 } else {
     $offset = $this->uri->segment(3);
 }

定义当前页面并定义控制器如下:

public function index($page=''){
    //...
    $page = ($page!='')? $page : 0;
    $config["cur_page"] = $page;

    //...

}

我已经工作了大约6个小时,以使CI分页工作如我所期望的那样,我不知道是配置元素的顺序还是我的浏览器在跟我开玩笑

下面是我的配置阵列,以便分页正常工作

正如您所看到的,这是正常的代码,但我的问题是,当我第一次呈现分页视图时,似乎一切正常,但是如果
$config['per_page']=10
设置为10,当我点击分页链接中的11个链接时,第2个链接显示为Cseguimiento/buscar_reportes/#,看起来当前页面是2而不是11

我很累,我开始改变
$config
数组的顺序,突然它起了作用。所以我在这里预先准备好了

$config['base_url'] = base_url().'Cseguimiento/buscar_reportes/';
$config['uri_segment'] = 3;
$config['use_page_numbers'] = TRUE;
$config['first_link'] = FALSE;
$config['last_link'] = FALSE;
$config['next_link'] = '&gt;';
$config['prev_link'] = '&lt;';
$config["full_tag_open"] = '<ul class="pagination">';
$config["full_tag_close"] = '</ul>';
$config["first_tag_open"] = '<li>';
$config["first_tag_close"] = '</li>';
$config["last_tag_open"] = '<li>';
$config["last_tag_close"] = '</li>';
$config["next_tag_open"] = '<li>';
$config["next_tag_close"] = '</li>';
$config["prev_tag_open"] = "<li>";
$config["prev_tag_close"] = "</li>";
$config["cur_tag_open"] = "<li>";
$config["cur_tag_close"] = "</li>";
$config["num_tag_open"] = "<li>";
$config["num_tag_close"] = "</li>";
$config['total_rows'] = $this->mseguimiento->filas($fecha_inicio,$fecha_fin);
$config['per_page'] = 10;
$choice = $config["total_rows"] / $config["per_page"];
$config["num_links"] = round($choice);
$page = $config['uri_segment'] * $config['per_page'];
$this->pagination->initialize($config);
$offset = ($this->uri->segment(3)-1)*$config['per_page'];
$output = array(
    'pagination_link'  => $this->pagination->create_links(),
    'lista_reportes'   => $this->mseguimiento->fetch_details($this->pagination->per_page, $offset,$fecha_inicio,$fecha_fin)
    );
$config['base_url']=base_url().'Cseguimiento/buscar_reportes/';
$config['uri_段]]=3;
$config['use_page_number']=TRUE;
$config['first_link']=FALSE;
$config['last_link']=FALSE;
$config['next_link']='';
$config['prev_link']='';
$config[“完整标签打开”]=”
    ; $config[“完整标签关闭”]='
'; $config[“第一个标签打开”]=“
  • ”; $config[“第一个标签关闭”]='
  • '; $config[“最后一个标签打开”]=“
  • ”; $config[“最后一次标记关闭”]='
  • '; $config[“下一个标签打开”]=“
  • ”; $config[“下一个标签关闭”]='
  • '; $config[“上一个标签打开”]=“
  • ”; $config[“上一个标签关闭”]=“
  • ”; $config[“cur_tag_open”]=“
  • ”; $config[“cur_tag_close”]=“
  • ”; $config[“num_tag_open”]=“
  • ”; $config[“num_tag_close”]=“
  • ”; $config['total_rows']=$this->mseguiminento->filas($fecha_inicio,$fecha_fin); $config['per_page']=10; $choice=$config[“总计行数”]/$config[“每页数”]; $config[“num_links”]=round($choice); $page=$config['uri_segment']*$config['per_page']; $this->pagination->initialize($config); $offset=($this->uri->segment(3)-1)*$config['per_page'; $output=array( “分页链接”=>this->pagination->create_links(), “lista_reportes”=>$this->mseguiminento->fetch_details($this->pagination->per_page,$offset,$fecha_inicio,$fecha_fin) );
    Hi rafi_ccj,感谢您的回复,但问题似乎在于paginate类中如何处理路由。我将基本url配置改为指向索引而不是页面,并且没有修改代码。虽然它不在v3.x的文档中,但仍然可以正常工作为什么
    $page=''
    而不是
    $page=0
    ??你救了我的命,朋友!我刚刚得救了!!!!!!!:)
    $config['base_url'] = base_url().'Cseguimiento/buscar_reportes/';
    $config['uri_segment'] = 3;
    $config['use_page_numbers'] = TRUE;
    $config['first_link'] = FALSE;
    $config['last_link'] = FALSE;
    $config['next_link'] = '&gt;';
    $config['prev_link'] = '&lt;';
    $config["full_tag_open"] = '<ul class="pagination">';
    $config["full_tag_close"] = '</ul>';
    $config["first_tag_open"] = '<li>';
    $config["first_tag_close"] = '</li>';
    $config["last_tag_open"] = '<li>';
    $config["last_tag_close"] = '</li>';
    $config["next_tag_open"] = '<li>';
    $config["next_tag_close"] = '</li>';
    $config["prev_tag_open"] = "<li>";
    $config["prev_tag_close"] = "</li>";
    $config["cur_tag_open"] = "<li>";
    $config["cur_tag_close"] = "</li>";
    $config["num_tag_open"] = "<li>";
    $config["num_tag_close"] = "</li>";
    $config['total_rows'] = $this->mseguimiento->filas($fecha_inicio,$fecha_fin);
    $config['per_page'] = 10;
    $choice = $config["total_rows"] / $config["per_page"];
    $config["num_links"] = round($choice);
    $page = $config['uri_segment'] * $config['per_page'];
    $this->pagination->initialize($config);
    $offset = ($this->uri->segment(3)-1)*$config['per_page'];
    $output = array(
        'pagination_link'  => $this->pagination->create_links(),
        'lista_reportes'   => $this->mseguimiento->fetch_details($this->pagination->per_page, $offset,$fecha_inicio,$fecha_fin)
        );