当前位置:首页 > PHP

利用php实现分页

2026-02-16 04:42:02PHP

实现分页功能

分页功能通常需要结合数据库查询和前端展示。以下是一个基于PHP和MySQL的分页实现方法:

获取总记录数

计算数据库中符合条件的总记录数,用于确定总页数:

$sql = "SELECT COUNT(*) as total FROM your_table";
$result = $conn->query($sql);
$row = $result->fetch_assoc();
$total_records = $row['total'];

计算分页参数

根据当前页码和每页显示数量计算分页参数:

$records_per_page = 10;
$total_pages = ceil($total_records / $records_per_page);

$current_page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
if ($current_page < 1) $current_page = 1;
if ($current_page > $total_pages) $current_page = $total_pages;

$offset = ($current_page - 1) * $records_per_page;

查询当前页数据

使用LIMIT子句获取当前页的数据:

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

显示分页导航

生成分页导航链接:

echo '<div class="pagination">';
if ($current_page > 1) {
    echo '<a href="?page='.($current_page-1).'">Previous</a>';
}

for ($i = 1; $i <= $total_pages; $i++) {
    if ($i == $current_page) {
        echo '<span class="current">'.$i.'</span>';
    } else {
        echo '<a href="?page='.$i.'">'.$i.'</a>';
    }
}

if ($current_page < $total_pages) {
    echo '<a href="?page='.($current_page+1).'">Next</a>';
}
echo '</div>';

完整示例代码

<?php
// 数据库连接
$conn = new mysqli("localhost", "username", "password", "database");

// 获取总记录数
$sql = "SELECT COUNT(*) as total FROM products";
$result = $conn->query($sql);
$row = $result->fetch_assoc();
$total_records = $row['total'];

// 分页参数
$records_per_page = 5;
$total_pages = ceil($total_records / $records_per_page);

$current_page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
if ($current_page < 1) $current_page = 1;
if ($current_page > $total_pages) $current_page = $total_pages;

$offset = ($current_page - 1) * $records_per_page;

// 获取当前页数据
$sql = "SELECT * FROM products LIMIT $offset, $records_per_page";
$result = $conn->query($sql);

// 显示数据
while ($row = $result->fetch_assoc()) {
    echo "<div>{$row['product_name']}</div>";
}

// 分页导航
echo '<div class="pagination">';
if ($current_page > 1) {
    echo '<a href="?page='.($current_page-1).'">Previous</a>';
}

for ($i = 1; $i <= $total_pages; $i++) {
    if ($i == $current_page) {
        echo '<span class="current">'.$i.'</span>';
    } else {
        echo '<a href="?page='.$i.'">'.$i.'</a>';
    }
}

if ($current_page < $total_pages) {
    echo '<a href="?page='.($current_page+1).'">Next</a>';
}
echo '</div>';

$conn->close();
?>

使用预处理语句的安全版本

为防止SQL注入,建议使用预处理语句:

// 获取总记录数
$stmt = $conn->prepare("SELECT COUNT(*) as total FROM products");
$stmt->execute();
$result = $stmt->get_result();
$row = $result->fetch_assoc();
$total_records = $row['total'];

// 获取当前页数据
$stmt = $conn->prepare("SELECT * FROM products LIMIT ?, ?");
$stmt->bind_param("ii", $offset, $records_per_page);
$stmt->execute();
$result = $stmt->get_result();

分页样式建议

可以添加CSS美化分页导航:

.pagination {
    margin-top: 20px;
}
.pagination a, .pagination span {
    padding: 8px 16px;
    margin: 0 4px;
    border: 1px solid #ddd;
    text-decoration: none;
    color: #333;
}
.pagination a:hover {
    background-color: #f5f5f5;
}
.pagination .current {
    background-color: #4CAF50;
    color: white;
    border: 1px solid #4CAF50;
}

利用php实现分页

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

相关文章

js实现分页

js实现分页

实现分页的基本思路 分页功能通常需要处理数据分割、页码生成和用户交互。核心逻辑包括计算总页数、根据当前页截取数据、渲染页码按钮等。 前端分页实现(静态数据) 假设已有全部数据,仅需前端分页展示:…

php实现树

php实现树

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

php实现websocket

php实现websocket

PHP 实现 WebSocket WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。PHP 可以通过多种方式实现 WebSocket 功能,以下是几种常见的方法: 使用 Ratc…

php 路由实现

php 路由实现

PHP 路由实现方法 在 PHP 中实现路由功能有多种方式,以下是几种常见的实现方法: 使用原生 PHP 实现 通过解析 URL 并匹配对应的控制器和动作: $request = $_SERVER…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

vue实现页面分页

vue实现页面分页

Vue实现页面分页的方法 使用Element UI的分页组件 Element UI提供了现成的分页组件el-pagination,适合快速集成。以下是一个示例代码: <template>…