php分页插件怎么选?php分页插件代码示例

在 PHP 中实现分页功能通常涉及两个主要部分:

  1. 后端逻辑:计算总页数、当前页、每页条数,并从数据库中获取对应页的数据。
  2. 前端展示:生成分页导航链接(如“上一页”、“1”、“2”、“3”、“下一页”)。

下面是一个完整、简洁、可复用的 PHP 分页类示例,适用于 MySQL 数据库(使用 PDO 或 mysqli 均可,这里以 PDO 为例)。

PHP增删改查、登录注册,上传图片,分页。
加载中
PHP增删改查、登录注册,上传图片,分页。

✅ 分页类:Paginator.php

<?php
class Paginator {
    private $totalItems;   // 总记录数
    private $itemsPerPage; // 每页显示条数
    private $currentPage;  // 当前页码
    private $totalPages;   // 总页数
    public function __construct($totalItems, $itemsPerPage = 10, $currentPage = 1) {
        $this->totalItems = (int)$totalItems;
        $this->itemsPerPage = (int)$itemsPerPage;
        $this->currentPage = max(1, (int)$currentPage); // 防止小于1
        $this->totalPages = ceil($this->totalItems / $this->itemsPerPage);
        // 防止页码超出范围
        if ($this->currentPage > $this->totalPages) {
            $this->currentPage = $this->totalPages;
        }
    }
    // 获取偏移量,用于 SQL LIMIT
    public function getOffset() {
        return ($this->currentPage - 1)  $this->itemsPerPage;
    }
    // 获取当前页
    public function getCurrentPage() 

php分页插件怎么选?php分页插件代码示例

{ return $this->currentPage; } // 获取总页数 public function getTotalPages() { return $this->totalPages; } // 是否有上一页 public function hasPrevPage() { return $this->currentPage > 1; } // 是否有下一页 public function hasNextPage() { return $this->currentPage < $this->totalPages; } // 生成分页 HTML public function render($baseUrl = '?page=') { if ($this->totalPages <= 1) { return ''; } $html = '<div class="pagination">'; // 上一页 if ($this->hasPrevPage()) { $html .= "<a href='{$baseUrl}{$this->currentPage - 1}' class='page-link'>« 上一页</a> "; } else { $html .= '<span class="page-link disabled">« 上一页</span> '; } // 页码按钮(简化版:只显示当前页前后2页) $start = max(1, $this->currentPage - 2); $end = min($this->totalPages, $this->currentPage + 2); for ($i = $start; $i <= $end; $i++) { if ($i == $this->currentPage) { $html .= "<span class='page-link active'>{$i}</span> "; } else { $html .= "<a href='{$baseUrl}{$i}' class='page-link'>{$i}</a> "; } } // 下一页

php分页插件怎么选?php分页插件代码示例

if ($this->hasNextPage()) { $html .= "<a href='{$baseUrl}{$this->currentPage + 1}' class='page-link'>下一页 »</a>"; } else { $html .= '<span class="page-link disabled">下一页 »</span>'; } $html .= '</div>'; return $html; } }

✅ 使用示例

假设你有一个 users 表,每页显示 10 条数据:

<?php
require_once 'Paginator.php';
// 1. 获取当前页码(默认第1页)
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
// 2. 每页显示条数
$itemsPerPage = 10;
// 3. 连接数据库(PDO 示例)
$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// 4. 获取总记录数
$stmt = $pdo->query("SELECT COUNT() FROM users");
$totalItems = (int)$stmt->fetchColumn();
// 5. 创建分页器实例
$paginator = new Paginator($totalItems, $itemsPerPage, $page);
// 6. 获取当前页数据
$offset = $paginator->getOffset();
$stmt = $pdo->prepare("SELECT  FROM users LIMIT :limit OFFSET :offset");
$stmt->bindValue(':limit', $itemsPerPage, PDO::PARAM_INT);
$stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
$stmt->execute();
$users = $stmt->fetchAll(PDO::FETCH_ASSOC);
// 7. 显示数据
echo "<ul>";
foreach ($users as $user) {
    echo "<li>{$user['name']}</li>";
}
echo "</ul>";
// 8. 显示分页导航
echo $paginator->render('?page=');
?>

php分页插件怎么选?php分页插件代码示例


✅ 可选:添加 CSS 样式(美化分页)

.pagination {
    margin: 20px 0;
}
.page-link {
    padding: 8px 12px;
    margin: 0 2px;
    text-decoration: none;
    color: #007bff;
    border: 1px solid #dee2e6;
    border-radius: 4px;
}
.page-link:hover {
    background-color: #e9ecef;
}
.page-link.active {
    background-color: #007bff;
    color: white;
    border-color: #007bff;
}
.page-link.disabled {
    color: #6c757d;
    pointer-events: none;
}

✅ 优点

  • 面向对象,易于复用
  • 自动处理边界情况(如页码超出、无数据等)
  • 支持自定义每页条数
  • 生成语义化 HTML,便于样式定制

✅ 注意事项

  • 确保 $totalItems$itemsPerPage 是整数,避免 SQL 注入或逻辑错误。
  • 如果数据量极大(如百万级),建议考虑使用游标分页(Cursor-based Pagination)而非传统偏移分页。
  • 可根据需求扩展:如显示“共 X 页”、“跳转到第 Y 页”等功能。

如需支持 MySQLiThinkPHP/Laravel 等框架的分页,也可以告诉我,我可以提供对应版本的实现。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/article/480635.html

(0)
Python付费课程值得买吗?python学习资源推荐
上一篇 2026年7月10日 15:12
分享wifi密码怎么设置?手机连不上wifi密码忘了怎么办
下一篇 2026年7月10日 15:13

相关推荐

  • fisheye代码检查工具好用吗?fisheye怎么安装

    Fisheye 代码检查工具的核心价值在于通过可视化热力图直观呈现代码变更风险,帮助团队在合并前快速定位潜在缺陷,显著提升代码审查效率并降低生产环境故障率,在软件开发生命周期中,代码审查(Code Review)是保障质量的关键防线,面对庞大的代码库和频繁的迭代,传统的审查方式往往让人力不堪重负,Fisheye……

    2026年7月10日
    20200
  • 服务器存储系统怎么选?服务器存储系统选型指南

    服务器存储系统是企业数据资产的“心脏”,选择时需根据业务场景在性能、容量与成本间寻找平衡,而非盲目追求最高配置,在数字化转型的深水区,数据不再仅仅是备份的对象,而是驱动业务决策的核心燃料,许多IT负责人在构建存储架构时,往往陷入一个误区:认为存储就是买更大的硬盘,现代服务器存储系统是一个复杂的生态,涉及I/O调……

    2026年7月12日
    10700
  • AI大模型编程软件好用吗?2026最新AI编程工具推荐

    AI大模型编程软件并非简单的代码补全工具,而是通过语义理解与逻辑推理,实现从自然语言到可执行代码的自动化生成,显著降低开发门槛并提升交付效率的智能化辅助系统,AI编程工具的核心价值与底层逻辑过去,程序员需要逐行敲击代码,不仅要处理语法细节,还要反复调试Bug,AI大模型编程软件改变了这一工作流,它不再仅仅是一个……

    2026年6月13日
    4800
  • IIS自带https证书怎么管理?,证书过期怎么办

    IIS自带的HTTPS证书本质是自签名证书,仅适合开发与内部测试,生产环境必须使用受信任的证书颁发机构(CA)签发的证书,证书管理涉及从生成、申请、安装到续期的全流程,合理选择与配置能兼顾安全与成本,理解IIS自带的HTTPS证书IIS自签名证书是如何生成的IIS在安装时会自动生成一个自签名证书,用于快速启用H……

    2026年8月21日
    300
  • IT网站制作策划中的产品策划模块如何做,有哪些注意事项

    在it网站制作策划中,产品策划模块的核心职责,是把“你要做什么网站”翻译成开发和技术都能看懂的执行文档,同时确保每个页面都覆盖用户真实搜索意图, 它不负责视觉好不好看,也不负责代码怎么实现,它负责的是网站的逻辑骨架、页面优先级以及内容与搜索意图的匹配度,很多企业网站上线后转化率低,问题恰恰出在策划阶段——栏目结……

    2026年8月19日
    600
  • 开年采购季为什么这么便宜,怎么买最划算?

    IT开年采购季是企业优化IT资产结构、降低总体拥有成本的最佳窗口,结合业务需求与市场节奏制定采购计划,能显著提升投入产出比,2026年开年采购季什么时候开始?抓住采购窗口期每年第一季度,尤其是春节后,各大厂商会集中推出年度促销政策,这构成了IT开年采购季的核心时段,2026年的采购季预计从1月中旬启动,持续到3……

    2026年8月17日
    800
  • AI大模型写作真的能替代人工吗?ai写作软件哪个好用

    AI大模型写作并非简单的文字生成工具,而是能够深度理解业务逻辑、优化内容结构并提升SEO排名的智能内容引擎,其核心价值在于将原本耗时数天的创作流程压缩至分钟级,同时保证专业度与原创性,AI写作如何重塑内容生产流程团队面临的最大痛点是产能与质量的平衡难题,人工撰写一篇深度行业分析,从选题策划到最终定稿,往往需要耗……

    2026年6月16日
    2900
  • 大模型客服领域微调怎么做?大模型客服微调具体步骤

    大模型客服领域微调的核心在于使用高质量的业务对话数据对基座模型进行监督微调(SFT),通过LoRA等高效参数微调技术,在保留模型通用能力的同时,精准注入企业专属的知识库与对话风格,从而显著降低幻觉率并提升回答准确率,在2026年的商业环境中,通用大模型虽然博学,但在处理垂直领域的客服场景时,往往显得“懂太多但用……

    2026年6月17日
    3000
  • 大模型的对齐是什么意思?大模型对齐技术原理详解

    大模型的对齐,本质上是让人类价值观、安全规范与模型输出行为保持一致的过程,确保AI不仅“聪明”,听话”且“无害”,想象一下,你教一只受过高等教育的狗做数学题,如果它算得对,但咬了人,这显然不是我们想要的结果,大模型就像这只狗,它通过海量数据学会了语言逻辑,但原始状态下它没有道德观念,甚至可能输出有害、偏见或违法……

    2026年6月22日
    1900
  • idmodel_更新表模型 – UpdateTableModel

    idmodel_更新表模型(UpdateTableModel)是数据建模中维护表结构变更的标准操作,它能确保模型与物理表同步,避免数据不一致风险,为什么需要关注idmodel更新表模型在数据模型的生命周期中,表结构变更是一种常态,业务需求调整、字段扩展、索引优化,都会触发模型更新,如果直接修改物理表而忽略模型层……

    2026年8月18日
    900

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注