当前位置:首页 > PHP

php怎么实现分页

2026-04-03 02:18:07PHP

PHP 实现分页的方法

使用 MySQL 的 LIMIT 语句

分页的核心逻辑是通过 SQL 的 LIMIT 子句限制每次查询的数据量。假设每页显示 10 条数据,当前页码为 $page

$perPage = 10;
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$offset = ($page - 1) * $perPage;

$sql = "SELECT * FROM your_table LIMIT $offset, $perPage";
$result = $conn->query($sql);

计算总页数

需要先查询总数据量,再计算总页数:

$totalQuery = "SELECT COUNT(*) as total FROM your_table";
$totalResult = $conn->query($totalQuery);
$totalRows = $totalResult->fetch_assoc()['total'];
$totalPages = ceil($totalRows / $perPage);

生成分页链接

在页面底部生成分页导航,通常包含“上一页”、“下一页”和页码链接:

php怎么实现分页

echo '<div class="pagination">';
if ($page > 1) {
    echo '<a href="?page=' . ($page - 1) . '">上一页</a>';
}
for ($i = 1; $i <= $totalPages; $i++) {
    echo '<a href="?page=' . $i . '"' . ($i == $page ? ' class="active"' : '') . '>' . $i . '</a>';
}
if ($page < $totalPages) {
    echo '<a href="?page=' . ($page + 1) . '">下一页</a>';
}
echo '</div>';

使用 Bootstrap 分页样式

如果需要更美观的分页,可以结合 Bootstrap 的 pagination 类:

echo '<nav aria-label="Page navigation"><ul class="pagination">';
if ($page > 1) {
    echo '<li class="page-item"><a class="page-link" href="?page=' . ($page - 1) . '">上一页</a></li>';
}
for ($i = 1; $i <= $totalPages; $i++) {
    $active = $i == $page ? ' active' : '';
    echo '<li class="page-item' . $active . '"><a class="page-link" href="?page=' . $i . '">' . $i . '</a></li>';
}
if ($page < $totalPages) {
    echo '<li class="page-item"><a class="page-link" href="?page=' . ($page + 1) . '">下一页</a></li>';
}
echo '</ul></nav>';

防止页码越界

确保页码在有效范围内(1 到 $totalPages):

php怎么实现分页

$page = max(1, min($page, $totalPages));

使用预处理语句防止 SQL 注入

如果分页参数来自用户输入,应使用预处理语句:

$stmt = $conn->prepare("SELECT * FROM your_table LIMIT ?, ?");
$stmt->bind_param("ii", $offset, $perPage);
$stmt->execute();
$result = $stmt->get_result();

封装为函数

可以将分页逻辑封装为可复用的函数:

function getPaginationData($conn, $table, $perPage, $page) {
    $offset = ($page - 1) * $perPage;
    $sql = "SELECT * FROM $table LIMIT $offset, $perPage";
    $result = $conn->query($sql);

    $totalQuery = "SELECT COUNT(*) as total FROM $table";
    $totalResult = $conn->query($totalQuery);
    $totalRows = $totalResult->fetch_assoc()['total'];
    $totalPages = ceil($totalRows / $perPage);

    return [
        'data' => $result->fetch_all(MYSQLI_ASSOC),
        'totalPages' => $totalPages,
        'currentPage' => $page
    ];
}

通过以上方法,可以实现灵活且安全的分页功能。

标签: 分页php
分享给朋友:

相关文章

vue实现下拉分页思想

vue实现下拉分页思想

实现下拉分页的基本思想 下拉分页(Infinite Scroll)是一种常见的分页加载方式,当用户滚动到页面底部时自动加载下一页数据。Vue 中可以通过监听滚动事件或使用第三方库实现。 监听滚动事件…

php验证码的实现

php验证码的实现

PHP 验证码实现方法 使用 GD 库生成基础验证码 创建画布并生成随机字符串作为验证码内容: session_start(); $width = 120; $height = 40; $image…

php实现的进度条

php实现的进度条

PHP 实现的进度条方法 在 PHP 中实现进度条通常可以通过命令行脚本(CLI)或 Web 页面两种方式完成。以下是几种常见的实现方法: 命令行进度条 使用 PHP CLI 实现进度条,可以通过不…

vue elementui实现分页

vue elementui实现分页

Vue + ElementUI 分页实现方法 安装与引入 确保已安装 ElementUI,可通过 npm 或 yarn 安装: npm install element-ui 在 main.js 中全…

php 链表实现

php 链表实现

在 PHP 中实现链表可以通过类来模拟链表节点(Node)和链表(LinkedList)结构。以下是链表的完整实现示例,包含基础操作如插入、删除、遍历等。 链表节点类(Node) 链表的基本单元是节…

php分页功能的实现

php分页功能的实现

分页功能的基本原理 分页功能的核心是通过SQL的LIMIT子句实现数据分段查询。LIMIT接受两个参数:起始位置偏移量和每页记录数。例如查询第2页(每页10条)的SQL语句为: SELECT * F…