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://test.idctop.com/article/480635.html

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

相关推荐

  • 什么是分布式聚类?分布式聚类算法有哪些

    分布式聚类通过将海量数据切分至多个节点并行计算,在解决单机内存瓶颈的同时显著提升了大规模数据集的处理效率与扩展性,为什么单机聚类在2026年已成瓶颈随着物联网设备、工业互联网以及社交网络的爆发式增长,数据量早已突破PB级别,传统的单机聚类算法,如经典的K-Means或DBSCAN,在处理这种规模的数据时,面临着……

    2026年7月8日
    18400
  • 奶龙ai大模型是什么?奶龙ai大模型怎么用

    奶龙AI大模型并非单一软件,而是基于视觉识别与情感交互技术构建的智能陪伴系统,其核心优势在于通过高拟真形象实现低门槛的情感抚慰与个性化内容生成,目前主要应用于家庭娱乐及轻办公场景,奶龙AI大模型的技术底座与核心能力解析奶龙AI大模型之所以能在2026年的智能陪伴赛道中脱颖而出,关键在于它突破了传统聊天机器人“冷……

    2026年6月15日
    3800
  • GaussDB与MariaDB的SERIAL类型为何不等价,有什么区别

    GaussDB的SERIAL类型是有符号4字节,而MariaDB的SERIAL类型等价于8字节无符号BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE,二者在迁移和ip转换网络字节序场景下直接不等价,容易引发U1100003错误,GaussDB SERIAL类型与Mar……

    2026年8月21日
    300
  • 服务器如何主动推送消息给客户端?websocket实时通信原理

    服务器主动往客户端发送消息的核心在于建立长连接通道,通过WebSocket或Server-Sent Events(SSE)技术打破传统HTTP请求-响应的单向限制,实现服务端数据的实时推送,在传统的Web开发模式中,客户端(浏览器或App)就像是一个总是处于等待状态的服务员,只有当它主动向服务器发起请求时,服务……

    2026年7月10日
    13600
  • Intel快速存储驱动怎么用,Intel MPI是什么?

    Intel快速存储驱动与Intel MPI是Intel平台上两项关键基础组件,前者负责优化磁盘I/O性能,后者为高性能计算提供消息传递框架,两者协同工作可显著提升数据密集型应用的运行效率,intel快速存储驱动有什么用?核心功能与安装详解快速存储驱动的核心作用Intel快速存储驱动(RST)不是简单的驱动补丁……

    2026年8月21日
    400
  • 16家AI大模型哪家强?2026最新大模型测评推荐

    2026年16家主流AI大模型在通用能力、垂直领域专精及性价比上已形成差异化格局,企业选型应遵循“通用选头部、垂直看场景、成本控预算”的核心原则,人工智能技术经过数年的迭代,已从单纯的技术炫技转向深度融入产业毛细血管,对于开发者、企业决策者以及普通用户而言,面对市面上琳琅满目的16家AI大模型,如何快速锁定最适……

    2026年6月13日
    10700
  • 服务器接入云数据库怎么操作?云数据库RDS连接配置教程

    服务器接入云数据库的核心在于通过内网或专线建立低延迟、高安全的连接通道,建议优先选择同地域部署以实现毫秒级响应并降低网络成本,将本地或公有云服务器与云数据库打通,不再是简单的IP配置,而是一场关于稳定性、安全性和成本控制的综合博弈,很多开发者在初期容易忽视网络架构的深层逻辑,导致后期运维成本飙升,业内专家指出……

    2026年7月8日
    1600
  • 服务器价格单如何正确解读才能不花冤枉钱,多少钱一台?

    服务器价格单不是简单的报价列表,读懂它需要从硬件配置、品牌服务、场景适配和长期成本四个维度入手,否则很容易被低价迷惑,导致后续运营成本失控,服务器价格单怎么看?从三个维度拆解硬件配置决定成本底线当你拿到一份服务器价格单,最醒目的部分通常是CPU型号、内存容量和硬盘规格,这些硬件直接决定了服务器的计算能力、存储空……

    2026年7月22日
    900
  • DDoS攻击如何有效防御?哪家DDoS防御公司靠谱

    选择防御DDoS攻击的公司时,核心在于评估其清洗能力的实时性、带宽资源的充足度以及业务无感知的稳定性,而非单纯比较价格高低,如今网络环境复杂多变,DDoS攻击早已不是简单的流量洪峰,而是混合了应用层漏洞利用、协议耗尽和低频慢速攻击的复合型威胁,对于企业而言,找到一家靠谱的防御服务商,就像给数字资产穿上了一件智能……

    2026年7月6日
    16100
  • 服务器维修网怎么选靠谱的维修公司,怎么收费?

    选择服务器维修网,核心在于技术实力和响应速度,靠谱的平台能直接降低企业停机损失,服务器维修网哪家好?从这三个维度判断技术团队的专业背景服务器维修依赖硬件排错和系统级调试,正规维修网的技术人员通常持有厂商认证,比如RHCE、HCIE等,行业共识认为,认证数量是衡量团队专业度的第一道门槛,你可以要求对方提供工程师的……

    2026年7月23日
    400

发表回复

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