当前位置:首页 > PHP

用php实现分页

2026-01-30 07:58:12PHP

使用 PHP 实现分页

数据库查询与分页逻辑

分页的核心是通过 SQL 的 LIMIT 子句限制返回的数据量。假设从名为 articles 的表中分页查询数据:

<?php
// 连接数据库
$db = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');

// 当前页码,默认为第1页
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$perPage = 10; // 每页显示10条数据
$offset = ($page - 1) * $perPage; // 计算偏移量

// 查询总记录数
$totalStmt = $db->query("SELECT COUNT(*) FROM articles");
$total = $totalStmt->fetchColumn();

// 查询当前页数据
$stmt = $db->prepare("SELECT * FROM articles LIMIT :offset, :perPage");
$stmt->bindParam(':offset', $offset, PDO::PARAM_INT);
$stmt->bindParam(':perPage', $perPage, PDO::PARAM_INT);
$stmt->execute();
$articles = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>

生成分页链接

根据总记录数和每页显示数量计算总页数,并生成分页导航:

<?php
$totalPages = ceil($total / $perPage); // 计算总页数

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

样式优化(可选)

为分页导航添加基础 CSS 样式:

.pagination {
    margin: 20px 0;
    display: flex;
    gap: 5px;
}
.pagination a {
    padding: 5px 10px;
    border: 1px solid #ddd;
    text-decoration: none;
}
.pagination a.active {
    background: #007bff;
    color: white;
}

完整示例

将数据库查询、分页逻辑和界面展示整合:

用php实现分页

<?php
// 连接数据库
$db = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');

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

// 获取总记录数
$totalStmt = $db->query("SELECT COUNT(*) FROM articles");
$total = $totalStmt->fetchColumn();
$totalPages = ceil($total / $perPage);

// 获取当前页数据
$stmt = $db->prepare("SELECT * FROM articles LIMIT :offset, :perPage");
$stmt->bindParam(':offset', $offset, PDO::PARAM_INT);
$stmt->bindParam(':perPage', $perPage, PDO::PARAM_INT);
$stmt->execute();
$articles = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>

<!-- 显示数据 -->
<ul>
<?php foreach ($articles as $article): ?>
    <li><?= htmlspecialchars($article['title']) ?></li>
<?php endforeach; ?>
</ul>

<!-- 分页导航 -->
<div class="pagination">
    <?php if ($page > 1): ?>
        <a href="?page=<?= $page - 1 ?>">上一页</a>
    <?php endif; ?>

    <?php for ($i = 1; $i <= $totalPages; $i++): ?>
        <a href="?page=<?= $i ?>" <?= $i == $page ? 'class="active"' : '' ?>>
            <?= $i ?>
        </a>
    <?php endfor; ?>

    <?php if ($page < $totalPages): ?>
        <a href="?page=<?= $page + 1 ?>">下一页</a>
    <?php endif; ?>
</div>

注意事项

  • 安全性:始终对用户输入的页码进行类型转换和验证,防止 SQL 注入。
  • 性能:大数据表分页时,避免使用 COUNT(*),可通过缓存或估算优化。
  • 扩展性:复杂场景可封装独立的分页类,支持自定义样式和参数。

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

相关文章

php实现分页

php实现分页

PHP实现分页的基本方法 使用LIMIT和OFFSET进行数据库查询分页。通过计算当前页码和每页显示数量,动态生成SQL语句。 $page = isset($_GET['page']) ? (int…

分页实现vue

分页实现vue

分页实现方法(Vue) 使用Element UI分页组件 安装Element UI库后,可以直接使用其分页组件。在模板中添加el-pagination,通过v-model绑定当前页码,设置page-s…

vue 实现分页

vue 实现分页

分页实现方法 在Vue中实现分页功能,可以通过计算属性和方法结合来实现。以下是一个典型的分页实现方式: 模板部分 <template> <div> <ul…

vue 分页 实现

vue 分页 实现

Vue 分页实现方法 使用 Element UI 分页组件 Element UI 提供了现成的分页组件 el-pagination,适合快速集成。需要先安装 Element UI 库。 安装 Ele…

php实现树

php实现树

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

php实现递归

php实现递归

递归的基本概念 递归是一种函数调用自身的技术,适用于解决可以分解为相同子问题的问题。在PHP中,递归需要明确的终止条件(基线条件),否则会导致无限循环。 递归实现阶乘 阶乘是经典的递归案例,n! =…