当前位置:首页 > PHP

php实现分页功能

2026-02-27 11:12:20PHP

PHP实现分页功能

基础分页实现

使用MySQL的LIMIT子句结合PHP变量实现分页。假设每页显示10条数据:

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

$sql = "SELECT * FROM table_name LIMIT $start, $perPage";
$result = $conn->query($sql);

计算总页数

获取总记录数并计算总页数:

$totalQuery = "SELECT COUNT(*) as total FROM table_name";
$totalResult = $conn->query($totalQuery);
$totalRows = $totalResult->fetch_assoc()['total'];
$totalPages = ceil($totalRows / $perPage);

生成分页链接

创建分页导航链接:

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

改进的分页类

封装一个可复用的分页类:

class Pagination {
    private $perPage;
    private $page;
    private $totalRows;

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

    public function getOffset() {
        return ($this->page - 1) * $this->perPage;
    }

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

    public function getTotalPages() {
        return ceil($this->totalRows / $this->perPage);
    }

    public function getLinks() {
        $links = '';
        $totalPages = $this->getTotalPages();

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

        return $links;
    }
}

使用分页类

$pagination = new Pagination(10);
$sql = "SELECT * FROM table_name LIMIT {$pagination->getOffset()}, {$pagination->perPage}";
$result = $conn->query($sql);

$totalQuery = "SELECT COUNT(*) as total FROM table_name";
$totalResult = $conn->query($totalQuery);
$pagination->setTotalRows($totalResult->fetch_assoc()['total']);

echo $pagination->getLinks();

Bootstrap分页样式

使用Bootstrap美化分页导航:

public function getBootstrapLinks() {
    $html = '<nav><ul class="pagination">';
    $totalPages = $this->getTotalPages();

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

    $html .= '</ul></nav>';
    return $html;
}

AJAX分页实现

使用jQuery实现无刷新分页:

$(document).on('click', '.page-link', function(e) {
    e.preventDefault();
    var page = $(this).attr('href').split('=')[1];

    $.ajax({
        url: 'load_data.php',
        type: 'GET',
        data: {page: page},
        success: function(data) {
            $('#content').html(data);
        }
    });
});

分页最佳实践

确保对用户输入进行验证,防止SQL注入:

$page = filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT, [
    'options' => [
        'default' => 1,
        'min_range' => 1
    ]
]);

考虑使用预处理语句提高安全性:

php实现分页功能

$stmt = $conn->prepare("SELECT * FROM table_name LIMIT ?, ?");
$stmt->bind_param("ii", $start, $perPage);
$stmt->execute();

对于大型数据集,考虑使用缓存或优化查询性能。

标签: 分页功能
分享给朋友:

相关文章

vue实现收货功能

vue实现收货功能

Vue实现收货功能的基本思路 收货功能通常涉及前端界面交互、后端数据更新和状态管理。在Vue中,可以通过组件化开发实现这一功能,结合API调用与状态管理工具(如Vuex或Pinia)。 创建收货按钮…

vue实现后台分页

vue实现后台分页

实现后台分页的方法 在Vue中实现后台分页通常需要结合前端和后端逻辑,后端负责处理数据分页,前端负责展示分页数据和交互。以下是具体实现方法: 后端API设计 后端需要提供支持分页的API接口,通常包…

uniapp实现支付功能

uniapp实现支付功能

支付功能实现概述 在UniApp中实现支付功能通常需要对接第三方支付平台(如微信支付、支付宝支付等)。以下是基于微信支付和支付宝支付的通用实现流程。 微信支付实现步骤 1. 配置支付权限 在微信开放…

vue电影功能实现

vue电影功能实现

Vue 电影功能实现 数据获取与展示 使用 Axios 或 Fetch API 从电影 API(如 TMDb、豆瓣 API)获取数据。在 Vue 的 created 或 mounted 生命周期钩子中…

jquery 分页

jquery 分页

实现 jQuery 分页的方法 客户端分页实现 使用 jQuery 实现客户端分页的核心思路是通过 JavaScript 控制数据的显示与隐藏。假设有一个包含数据的 HTML 列表或表格: // 分…

h5能实现抽题功能吗

h5能实现抽题功能吗

H5实现抽题功能的技术方案 H5完全能够实现抽题功能,主要通过前端技术结合后端数据交互完成。以下是具体实现方式: 前端技术实现 HTML5结合JavaScript可以动态生成和展示题目,利用DOM操…