当前位置:首页 > PHP

php实现分页类

2026-01-28 20:47:39PHP

PHP 分页类实现

以下是一个简单的 PHP 分页类实现示例,包含基本的分页逻辑和样式控制:

php实现分页类

<?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 = $currentPage;
        $this->url = $url;
        $this->totalPages = ceil($totalItems / $itemsPerPage);
    }

    public function getPagination() {
        if ($this->totalPages <= 1) {
            return '';
        }

        $pagination = '<ul class="pagination">';

        // 上一页
        if ($this->currentPage > 1) {
            $pagination .= '<li><a href="' . $this->url . ($this->currentPage - 1) . '">&laquo;</a></li>';
        }

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

        if ($end - $start < $this->pageRange - 1) {
            $start = max(1, $end - $this->pageRange + 1);
        }

        if ($start > 1) {
            $pagination .= '<li><a href="' . $this->url . '1">1</a></li>';
            if ($start > 2) {
                $pagination .= '<li class="disabled"><span>...</span></li>';
            }
        }

        for ($i = $start; $i <= $end; $i++) {
            if ($i == $this->currentPage) {
                $pagination .= '<li class="active"><span>' . $i . '</span></li>';
            } else {
                $pagination .= '<li><a href="' . $this->url . $i . '">' . $i . '</a></li>';
            }
        }

        if ($end < $this->totalPages) {
            if ($end < $this->totalPages - 1) {
                $pagination .= '<li class="disabled"><span>...</span></li>';
            }
            $pagination .= '<li><a href="' . $this->url . $this->totalPages . '">' . $this->totalPages . '</a></li>';
        }

        // 下一页
        if ($this->currentPage < $this->totalPages) {
            $pagination .= '<li><a href="' . $this->url . ($this->currentPage + 1) . '">&raquo;</a></li>';
        }

        $pagination .= '</ul>';
        return $pagination;
    }
}
?>

使用示例

<?php
// 假设总记录数为100,每页显示10条,当前页码从URL获取
$totalItems = 100;
$itemsPerPage = 10;
$currentPage = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$url = 'index.php?page=';

$pagination = new Pagination($totalItems, $itemsPerPage, $currentPage, $url);
echo $pagination->getPagination();
?>

数据库查询配合分页

<?php
// 数据库查询示例
$limit = $itemsPerPage;
$offset = ($currentPage - 1) * $itemsPerPage;

// 假设使用PDO
$stmt = $pdo->prepare("SELECT * FROM your_table LIMIT :limit OFFSET :offset");
$stmt->bindParam(':limit', $limit, PDO::PARAM_INT);
$stmt->bindParam(':offset', $offset, PDO::PARAM_INT);
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);

// 显示数据
foreach ($results as $row) {
    // 显示数据内容
}

// 显示分页
echo $pagination->getPagination();
?>

分页样式建议

可以添加以下CSS样式来美化分页:

php实现分页类

.pagination {
    display: inline-block;
    padding: 0;
    margin: 20px 0;
}

.pagination li {
    display: inline;
    margin: 0 5px;
}

.pagination li a, .pagination li span {
    padding: 8px 16px;
    text-decoration: none;
    border: 1px solid #ddd;
    color: #337ab7;
}

.pagination li.active span {
    background-color: #337ab7;
    color: white;
    border: 1px solid #337ab7;
}

.pagination li a:hover {
    background-color: #eee;
}

高级功能扩展

如果需要更复杂的功能,可以考虑以下扩展:

  1. 添加AJAX支持,实现无刷新分页
  2. 支持自定义URL参数格式
  3. 添加每页显示数量选择器
  4. 支持多语言
  5. 添加跳转到指定页码功能

这个分页类提供了基本的分页功能,可以根据项目需求进行修改和扩展。

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

相关文章

vue 分页的实现

vue 分页的实现

Vue 分页的实现方法 使用 Element UI 的分页组件 安装 Element UI: npm install element-ui 在 Vue 项目中引入 Element UI 的分页组件:…

php长连接实现

php长连接实现

PHP 长连接实现方法 长连接(Keep-Alive)允许客户端与服务器在一次TCP连接中发送和接收多个HTTP请求/响应,减少重复建立连接的开销。以下是PHP中实现长连接的几种方式: 配置HTTP…

php实现的分页

php实现的分页

PHP 实现分页的方法 基本分页逻辑 分页的核心在于计算总页数、当前页码以及数据偏移量。假设每页显示 10 条数据: $current_page = isset($_GET['page']) ? (…

php无限分类的实现

php无限分类的实现

PHP无限分类的实现 无限分类是一种常见的树形结构数据组织方式,适用于商品分类、菜单管理、地区选择等场景。以下是几种实现方法: 递归实现法 递归是最直观的实现方式,通过函数自身调用来遍历子分类。数据…

php怎么实现登录功能

php怎么实现登录功能

数据库准备 创建用户表存储登录信息,通常包括用户名、密码(需加密)等字段。示例SQL: CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY…

php 实现评论

php 实现评论

实现 PHP 评论功能 数据库设计 创建数据库表存储评论数据,通常包含以下字段: id:评论唯一标识 user_id:用户ID content:评论内容 created_at:评论时间 parent…