当前位置:首页 > PHP

php如何实现分页

2026-02-14 00:47:05PHP

PHP 分页实现方法

基础分页实现

在 PHP 中实现分页通常需要结合 SQL 查询的 LIMIT 子句。以下是一个简单的分页实现示例:

// 定义每页显示的记录数
$recordsPerPage = 10;

// 获取当前页码
$currentPage = isset($_GET['page']) ? (int)$_GET['page'] : 1;

// 计算偏移量
$offset = ($currentPage - 1) * $recordsPerPage;

// 查询数据
$sql = "SELECT * FROM your_table LIMIT $offset, $recordsPerPage";
$result = mysqli_query($connection, $sql);

// 获取总记录数
$totalRecords = mysqli_fetch_assoc(mysqli_query($connection, "SELECT COUNT(*) as total FROM your_table"))['total'];

// 计算总页数
$totalPages = ceil($totalRecords / $recordsPerPage);

分页链接生成

生成分页导航链接的代码示例:

// 显示分页导航
echo '<div class="pagination">';
for ($i = 1; $i <= $totalPages; $i++) {
    if ($i == $currentPage) {
        echo "<span>$i</span>";
    } else {
        echo "<a href='?page=$i'>$i</a>";
    }
}
echo '</div>';

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

更安全的方式是使用预处理语句:

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

使用 PDO 实现分页

使用 PDO 的示例代码:

$pdo = new PDO("mysql:host=localhost;dbname=your_db", "username", "password");

$stmt = $pdo->prepare("SELECT * FROM your_table LIMIT :offset, :limit");
$stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
$stmt->bindValue(':limit', $recordsPerPage, PDO::PARAM_INT);
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);

高级分页功能

实现更复杂的分页功能,如显示页码范围:

$range = 3; // 显示当前页码前后各3页
$startPage = max(1, $currentPage - $range);
$endPage = min($totalPages, $currentPage + $range);

echo '<div class="pagination">';
if ($currentPage > 1) {
    echo "<a href='?page=1'>&laquo; First</a>";
    echo "<a href='?page=".($currentPage - 1)."'>&lsaquo; Prev</a>";
}

for ($i = $startPage; $i <= $endPage; $i++) {
    if ($i == $currentPage) {
        echo "<span>$i</span>";
    } else {
        echo "<a href='?page=$i'>$i</a>";
    }
}

if ($currentPage < $totalPages) {
    echo "<a href='?page=".($currentPage + 1)."'>Next &rsaquo;</a>";
    echo "<a href='?page=$totalPages'>Last &raquo;</a>";
}
echo '</div>';

使用 Bootstrap 样式

结合 Bootstrap 的分页样式:

php如何实现分页

echo '<nav aria-label="Page navigation">';
echo '<ul class="pagination">';
echo '<li class="page-item'.($currentPage == 1 ? ' disabled' : '').'">';
echo '<a class="page-link" href="?page=1" aria-label="First"><span aria-hidden="true">&laquo;</span></a></li>';

for ($i = 1; $i <= $totalPages; $i++) {
    echo '<li class="page-item'.($i == $currentPage ? ' active' : '').'">';
    echo '<a class="page-link" href="?page='.$i.'">'.$i.'</a></li>';
}

echo '<li class="page-item'.($currentPage == $totalPages ? ' disabled' : '').'">';
echo '<a class="page-link" href="?page='.$totalPages.'" aria-label="Last"><span aria-hidden="true">&raquo;</span></a></li>';
echo '</ul>';
echo '</nav>';

使用分页类库

对于更复杂的项目,可以考虑使用现成的分页类库,如 Laravel 的 Paginator 或独立的 PHP 分页类库。这些类库通常提供更多功能和更好的灵活性。

分享给朋友:

相关文章

js实现分页

js实现分页

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

react 如何分页

react 如何分页

分页实现方法 在React中实现分页功能可以通过多种方式完成,具体取决于数据来源(如API或本地数据)和UI库的选择。以下是常见的实现方法: 使用本地数据分页 对于存储在组件状态或Context中…

vue router实现分页

vue router实现分页

使用 Vue Router 实现分页 在 Vue.js 项目中,可以通过 Vue Router 结合分页组件实现分页功能。以下是实现分页的几种方法: 使用路由参数传递页码 在路由配置中定义一个动态参…

vue实现分页条数

vue实现分页条数

Vue 实现分页条数控制 在 Vue 中实现分页条数控制通常需要结合分页组件和后端 API 支持。以下是几种常见的实现方式: 使用 Element UI 的分页组件 Element UI 提供了强大…

react如何实现混入

react如何实现混入

在React中实现混入(Mixin)功能可以通过以下几种方式实现,React官方已不推荐使用传统的React.createClass混入方式,但可通过高阶组件或自定义Hook替代。 高阶组件(HOC…

React如何实现通知

React如何实现通知

React 实现通知的方法 使用状态管理 在 React 组件中通过 useState 或 useReducer 管理通知状态,触发状态更新时显示通知。适合简单场景,无需额外依赖。 import {…