当前位置:首页 > 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);

分页链接生成

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

php实现分页显示怎么实现

// 生成分页链接
$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注入,建议使用预处理语句:

php实现分页显示怎么实现

$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:

// 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实现分页功能

Vue 分页功能实现 在 Vue 中实现分页功能通常需要结合后端 API 或前端数据分页逻辑。以下是两种常见的实现方式: 前端分页实现 适用于数据量较小的情况,直接在 Vue 组件中处理分页逻辑…

vue分页实现

vue分页实现

Vue 分页实现方法 基础分页组件实现 创建一个简单的分页组件,包含上一页、下一页和页码按钮。组件接收当前页码、总页数等参数,通过事件通知父组件页码变化。 <template> &l…

php实现图片上传

php实现图片上传

实现图片上传的基本步骤 创建HTML表单用于文件上传,表单需设置enctype="multipart/form-data"属性,确保文件数据正确传输。 <form action="upload…

php实现websocket

php实现websocket

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

php实现登录

php实现登录

PHP 登录功能实现 数据库连接与用户表创建 创建一个数据库连接文件 db.php,用于管理数据库连接。MySQL 示例代码如下: <?php $host = 'localhost'; $db…

php 路由实现

php 路由实现

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