当前位置:首页 > PHP

php实现分页类

2026-02-27 17:47:00PHP

php实现分页类

php实现分页类

PHP 分页类实现

分页功能在Web开发中非常常见,可以通过封装一个分页类来简化代码。以下是一个完整的PHP分页类实现方案:

分页类基本结构

class Pagination {
    private $totalItems;
    private $itemsPerPage;
    private $currentPage;
    private $totalPages;
    private $pageRange = 5;
    private $url;

    public function __construct($totalItems, $itemsPerPage, $currentPage, $url = '') {
        $this->totalItems = $totalItems;
        $this->itemsPerPage = $itemsPerPage;
        $this->currentPage = max(1, min($currentPage, $this->getTotalPages()));
        $this->url = $url;
    }

    public function getTotalPages() {
        return ceil($this->totalItems / $this->itemsPerPage);
    }
}

核心分页逻辑

public function getPaginationLinks() {
    $links = [];
    $totalPages = $this->getTotalPages();

    // 上一页
    if ($this->currentPage > 1) {
        $links[] = [
            'page' => $this->currentPage - 1,
            'text' => '上一页',
            'active' => false
        ];
    }

    // 页码链接
    $start = max(1, $this->currentPage - floor($this->pageRange / 2));
    $end = min($totalPages, $start + $this->pageRange - 1);

    for ($i = $start; $i <= $end; $i++) {
        $links[] = [
            'page' => $i,
            'text' => $i,
            'active' => ($i == $this->currentPage)
        ];
    }

    // 下一页
    if ($this->currentPage < $totalPages) {
        $links[] = [
            'page' => $this->currentPage + 1,
            'text' => '下一页',
            'active' => false
        ];
    }

    return $links;
}

URL生成方法

public function getPageUrl($page) {
    if (strpos($this->url, '?') !== false) {
        return $this->url . '&page=' . $page;
    } else {
        return $this->url . '?page=' . $page;
    }
}

数据库分页查询

public function getLimitOffset() {
    $offset = ($this->currentPage - 1) * $this->itemsPerPage;
    return [
        'limit' => $this->itemsPerPage,
        'offset' => $offset
    ];
}

完整使用示例

// 假设总记录数为100,每页显示10条,当前第3页
$totalItems = 100;
$itemsPerPage = 10;
$currentPage = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$url = 'http://example.com/list.php';

$pagination = new Pagination($totalItems, $itemsPerPage, $currentPage, $url);
$links = $pagination->getPaginationLinks();

// 数据库查询
$limitData = $pagination->getLimitOffset();
$sql = "SELECT * FROM items LIMIT {$limitData['limit']} OFFSET {$limitData['offset']}";

// 显示分页链接
foreach ($links as $link) {
    $class = $link['active'] ? 'active' : '';
    echo "<a href='{$pagination->getPageUrl($link['page'])}' class='$class'>{$link['text']}</a> ";
}

样式优化建议

.pagination a {
    display: inline-block;
    padding: 5px 10px;
    margin: 0 2px;
    border: 1px solid #ddd;
    text-decoration: none;
}

.pagination a.active {
    background-color: #007bff;
    color: white;
    border-color: #007bff;
}

.pagination a:hover:not(.active) {
    background-color: #ddd;
}

高级功能扩展

  • 添加首页和尾页链接
  • 支持AJAX分页
  • 添加每页显示数量选择器
  • 支持URL美化(如/page/2)
  • 添加总记录数显示
  • 支持多参数URL处理

这个分页类提供了基本的分页功能,可以根据项目需求进行扩展和定制。使用时只需要实例化类并调用相应方法即可实现分页功能。

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

相关文章

vue搜索过后实现分页

vue搜索过后实现分页

实现 Vue 搜索后分页的方法 数据绑定与搜索逻辑 在 Vue 组件中定义数据属性,包括原始数据列表、搜索关键词、分页相关参数: data() { return { originalLi…

php 实现文件下载

php 实现文件下载

实现文件下载的基本方法 使用 PHP 实现文件下载的核心是通过设置 HTTP 头部信息,强制浏览器将文件作为附件下载而非直接显示。以下是一个基础实现示例: $file_path = '/path/t…

php 实现队列

php 实现队列

PHP 实现队列的方法 PHP 可以通过多种方式实现队列功能,以下是几种常见的实现方法: 使用数组实现队列 PHP 数组可以通过 array_push 和 array_shift 函数模拟队列的先进…

php 实现跳转

php 实现跳转

PHP 实现页面跳转的方法 在PHP中,实现页面跳转可以通过多种方式完成,以下是几种常用的方法: 使用header函数 header函数是PHP中最常用的跳转方法,通过发送HTTP头部信息实现跳转。…

php 线程实现

php 线程实现

PHP 线程实现方法 PHP 本身是单线程语言,但可以通过扩展或库实现多线程功能。以下是几种常见的实现方式: 使用 pthreads 扩展 pthreads 是一个 PHP 扩展,允许在 PHP 中…

php实现文章

php实现文章

PHP实现文章管理功能 在PHP中实现文章管理功能通常涉及数据库操作、表单处理和页面展示。以下是实现文章管理的基本步骤: 数据库设计 创建articles表,包含字段如id、title、conten…