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

生成分页链接

创建分页导航链接:

php实现分页功能

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美化分页导航:

php实现分页功能

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
    ]
]);

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

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

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

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

相关文章

分页实现vue

分页实现vue

分页实现(Vue) 在Vue中实现分页功能通常需要结合前端分页逻辑和后端API支持。以下是两种常见的实现方式: 前端分页实现 适用于数据量较小的情况,直接在客户端完成分页逻辑。 <templ…

vue实现分页功能

vue实现分页功能

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

vue实现按钮实现点击功能

vue实现按钮实现点击功能

实现按钮点击功能 在Vue中实现按钮点击功能可以通过v-on指令或@缩写来绑定事件。以下是几种常见的实现方式: 使用v-on指令 通过v-on:click绑定点击事件,触发定义在methods中的…

vue实现论坛功能

vue实现论坛功能

实现论坛功能的核心模块 论坛功能通常包含用户发帖、回帖、分类浏览、搜索等核心模块。Vue.js 作为前端框架,需配合后端 API 实现数据交互。 基础项目结构搭建 使用 Vue CLI 或 Vit…

vue实现答题功能

vue实现答题功能

Vue实现答题功能 数据准备 创建一个包含题目、选项和正确答案的数据结构,通常是一个数组对象。每个题目对象包含问题文本、选项数组和正确答案索引。 const questions = [ {…

h5能实现抽题功能吗

h5能实现抽题功能吗

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