当前位置:首页 > PHP

php 分页怎么实现

2026-02-13 23:15:00PHP

基本分页实现

使用 LIMITOFFSET 实现数据库分页查询。假设每页显示 10 条记录,当前页码为 $page

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

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

计算总页数

需要先查询总记录数以计算总页数:

$totalQuery = "SELECT COUNT(*) as total FROM articles";
$totalResult = $pdo->query($totalQuery)->fetch();
$totalPages = ceil($totalResult['total'] / $perPage);

生成分页链接

创建简单的分页导航链接:

for ($i = 1; $i <= $totalPages; $i++) {
    echo "<a href='?page=$i'>$i</a> ";
}

使用预编译语句(安全版)

防止 SQL 注入的安全实现方式:

php 分页怎么实现

$stmt = $pdo->prepare("SELECT * FROM articles LIMIT :offset, :perPage");
$stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
$stmt->bindValue(':perPage', $perPage, PDO::PARAM_INT);
$stmt->execute();

分页类封装

可以封装一个简单的分页类:

class Paginator {
    private $perPage;
    private $page;
    private $total;

    public function __construct($perPage = 10) {
        $this->perPage = $perPage;
        $this->page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
    }

    public function getLimit() {
        return [($this->page - 1) * $this->perPage, $this->perPage];
    }

    public function setTotal($total) {
        $this->total = $total;
    }

    public function getLinks() {
        $totalPages = ceil($this->total / $this->perPage);
        $links = [];
        for ($i = 1; $i <= $totalPages; $i++) {
            $links[] = [
                'page' => $i,
                'current' => $i === $this->page
            ];
        }
        return $links;
    }
}

现代框架的分页实现

Laravel 等框架内置分页功能:

php 分页怎么实现

// Laravel 示例
$users = DB::table('users')->paginate(15);
return view('user.index', ['users' => $users]);

// 视图中直接使用
{{ $users->links() }}

前端分页注意事项

对于大量数据考虑实现前端分页或无限滚动,减少服务器压力:

// 前端分页示例
function fetchPage(page) {
    fetch(`/api/data?page=${page}`)
        .then(response => response.json())
        .then(data => renderData(data));
}

性能优化建议

对于大数据表分页,避免使用 OFFSET,改用基于 ID 的分页:

$lastId = isset($_GET['last_id']) ? (int)$_GET['last_id'] : 0;
$sql = "SELECT * FROM articles WHERE id > $lastId ORDER BY id LIMIT $perPage";

分页样式美化

使用 Bootstrap 等 CSS 框架美化分页:

<nav aria-label="Page navigation">
    <ul class="pagination">
        <?php foreach ($paginator->getLinks() as $link): ?>
            <li class="page-item <?= $link['current'] ? 'active' : '' ?>">
                <a class="page-link" href="?page=<?= $link['page'] ?>">
                    <?= $link['page'] ?>
                </a>
            </li>
        <?php endforeach ?>
    </ul>
</nav>

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

相关文章

php实现文件上传

php实现文件上传

文件上传的基本实现 在PHP中实现文件上传需要使用$_FILES超全局数组处理上传的文件数据。表单必须设置enctype="multipart/form-data"属性,并采用POST方法提交。…

vue实现下拉分页思想

vue实现下拉分页思想

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

vue 分页 实现

vue 分页 实现

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

php实现上传

php实现上传

PHP 文件上传实现 HTML 表单设置 创建一个包含文件上传字段的 HTML 表单,确保表单的 enctype 属性设置为 multipart/form-data,这是文件上传必需的设置。 &l…

php 实现登录

php 实现登录

PHP 登录功能实现 使用 PHP 实现登录功能通常需要结合数据库验证和会话管理。以下是一个基本的登录实现流程: 数据库准备 创建用户表存储用户名和密码(建议使用哈希加密): CREATE T…

php 登录实现

php 登录实现

PHP 登录实现 PHP 登录功能通常包括用户认证、会话管理和安全性措施。以下是实现 PHP 登录功能的关键步骤。 数据库准备 创建一个用户表存储用户信息,通常包括用户名、密码(加密存储)和其他必要…