当前位置:首页 > PHP

php实现分页显示怎么实现

2026-01-30 05:26:08PHP

基本分页实现

在PHP中实现分页功能,通常需要结合SQL的LIMIT子句和前端页码控制。以下是一个基础实现方法:

// 获取当前页码,默认为1
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$perPage = 10; // 每页显示数量
$offset = ($page - 1) * $perPage;

// 查询总记录数
$total = $db->query("SELECT COUNT(*) FROM table")->fetchColumn();
$totalPages = ceil($total / $perPage);

// 查询当前页数据
$stmt = $db->query("SELECT * FROM table LIMIT $offset, $perPage");
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);

分页链接生成

生成分页导航链接时需要考虑边界情况(如第一页/最后一页):

// 生成分页链接
$pagination = '';
if ($totalPages > 1) {
    $pagination .= '<div class="pagination">';

    // 上一页链接
    if ($page > 1) {
        $pagination .= '<a href="?page='.($page-1).'">上一页</a>';
    }

    // 页码链接
    for ($i = 1; $i <= $totalPages; $i++) {
        if ($i == $page) {
            $pagination .= '<span class="current">'.$i.'</span>';
        } else {
            $pagination .= '<a href="?page='.$i.'">'.$i.'</a>';
        }
    }

    // 下一页链接
    if ($page < $totalPages) {
        $pagination .= '<a href="?page='.($page+1).'">下一页</a>';
    }

    $pagination .= '</div>';
}

使用预处理语句

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

$stmt = $db->prepare("SELECT * FROM table LIMIT :offset, :perPage");
$stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
$stmt->bindValue(':perPage', $perPage, PDO::PARAM_INT);
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);

分页样式优化

可以添加省略号处理大量页码的情况,提升用户体验:

$range = 2; // 当前页前后显示的页码数
if ($totalPages > 1) {
    $pagination .= '<div class="pagination">';

    if ($page > 1) {
        $pagination .= '<a href="?page=1">首页</a>';
        $pagination .= '<a href="?page='.($page-1).'">上一页</a>';
    }

    // 显示页码范围
    $start = max(1, $page - $range);
    $end = min($totalPages, $page + $range);

    if ($start > 1) {
        $pagination .= '<span>...</span>';
    }

    for ($i = $start; $i <= $end; $i++) {
        // 页码链接代码...
    }

    if ($end < $totalPages) {
        $pagination .= '<span>...</span>';
    }

    if ($page < $totalPages) {
        $pagination .= '<a href="?page='.($page+1).'">下一页</a>';
        $pagination .= '<a href="?page='.$totalPages.'">末页</a>';
    }

    $pagination .= '</div>';
}

AJAX分页实现

对于无刷新分页体验,可以使用AJAX:

php实现分页显示怎么实现

// JavaScript部分
$(document).on('click', '.pagination a', function(e) {
    e.preventDefault();
    var page = $(this).attr('href').split('page=')[1];
    loadPage(page);
});

function loadPage(page) {
    $.ajax({
        url: 'data.php?page='+page,
        type: 'GET',
        success: function(data) {
            $('#content').html(data.results);
            $('#pagination').html(data.pagination);
        }
    });
}
// PHP部分(data.php)
$response = [
    'results' => $resultsHtml,
    'pagination' => $paginationHtml
];
echo json_encode($response);

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

相关文章

vue前端分页怎么实现

vue前端分页怎么实现

使用 Element UI 的分页组件 Element UI 提供了现成的分页组件 <el-pagination>,可以快速实现分页功能。需要安装 Element UI 并注册组件。 &…

php实现上传

php实现上传

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

php购物车实现

php购物车实现

PHP购物车实现方法 使用PHP实现购物车功能可以通过多种方式完成,以下是几种常见的实现方法: Session存储购物车数据 利用PHP的$_SESSION超全局变量存储购物车数据是最简单的方法。用…

php实现聊天

php实现聊天

实现 PHP 聊天功能的方法 使用 WebSocket 和 PHP 实现实时聊天 WebSocket 是一种全双工通信协议,适合实现实时聊天功能。PHP 可以通过 Ratchet 库实现 WebSo…

php队列的实现

php队列的实现

PHP队列的实现方式 PHP中实现队列功能可以通过多种方式,根据需求选择适合的方案: 使用数组实现基础队列 PHP数组本身支持队列操作,利用array_push和array_shift函数: $q…

php实现分类

php实现分类

PHP实现分类的方法 数据库设计 创建分类表时,通常需要包含id、名称、父级id等字段。父级id用于实现多级分类结构。 CREATE TABLE categories ( id INT AU…