当前位置:首页 > 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
分享给朋友:

相关文章

php实现分页

php实现分页

PHP实现分页的基本方法 使用原生PHP实现分页功能需要结合数据库查询和HTML展示。以下是核心实现步骤: 数据库查询与分页逻辑 // 连接数据库 $conn = new mysqli('loca…

php实现搜索功能

php实现搜索功能

实现基本的搜索功能 在PHP中实现搜索功能通常涉及数据库查询。以下是一个简单的实现方式,假设使用MySQL数据库: <?php // 连接数据库 $conn = new mysqli('loc…

php实现树

php实现树

PHP实现树结构的方法 在PHP中实现树结构通常可以通过递归或迭代的方式完成。以下是几种常见的实现方法: 递归实现树结构 递归是处理树结构的自然方式,尤其适用于具有未知深度的树。 class Tr…

php验证码的实现

php验证码的实现

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

php实现定时

php实现定时

PHP 实现定时任务的方法 PHP 本身是脚本语言,通常需要借助外部工具或框架实现定时任务。以下是几种常见方法: 使用 Cron 任务 Linux 系统自带的 Cron 是常用的定时任务工具。通过编…

php登陆功能实现

php登陆功能实现

实现PHP登录功能 数据库准备 创建一个用户表存储登录信息,基本字段包括用户名、密码(需加密)等: CREATE TABLE users ( id INT AUTO_INCREMENT PR…