You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeIgniter分页记录计数显示异常:第二页计数未更新

解决分页记录计数显示异常的问题

嘿,我一眼就看出你这问题出在当前页码的计算逻辑上,咱们一步步捋清楚:

原代码的核心错误

你写的这段代码:

$curpage=floor(($this->uri->segment(1)/$config['per_page']) + 1);

有两个致命问题:

  1. 取错了URL分段:$this->uri->segment(1) 获取的是URL的第一个分段,通常是控制器名称(比如你的URL是yourdomain.com/post/list/5,segment(1)是post,不是分页偏移量5)。用字符串除以数字会得到0,所以$curpage永远等于1,自然计数一直显示第一页的内容。
  2. 没必要用floor:分页偏移量本身就是每页条数的整数倍(CodeIgniter分页类会自动处理),直接计算就行,不需要取整。

修复后的完整代码

我给你调整了逻辑,同时处理了边界情况(比如最后一页条数不足每页上限的情况):

// 1. 获取正确的分页偏移量:默认取URL第3段,不存在则为0(第一页)
// 注意:如果你的偏移量在其他分段(比如segment(2)),对应修改数字即可
$offset = $this->uri->segment(3, 0);

// 2. 从配置中取出总条数和每页条数
$total = $config["total_rows"];
$per_page = $config['per_page'];

// 3. 计算当前页码:偏移量/每页条数 + 1(因为偏移量从0开始)
$curpage = ($offset / $per_page) + 1;

// 4. 计算显示的起始和结束条数
$result_start = $offset + 1;
$result_end = $offset + $per_page;
// 处理最后一页的边界情况:如果结束条数超过总条数,直接取总条数
if ($result_end > $total) {
    $result_end = $total;
}

// 5. 拼接最终显示文本
$display_text = "显示{$result_start}-{$result_end}条,共{$total}条";

验证你的例子

假设总条数10,每页5条:

  • 第一页偏移量是0:显示1-5条,共10条(正确)
  • 第二页偏移量是5:显示6-10条,共10条(符合你的预期,你之前写的“显示第10条”应该是笔误啦)

额外注意点

如果你的路由做了自定义配置,分页偏移量不在URL第3段,一定要修改$this->uri->segment()的参数,比如如果URL是yourdomain.com/post/5,那偏移量在segment(2),就改成$this->uri->segment(2, 0)。

内容的提问来源于stack exchange,提问作者MSZ900

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:22:59