当前位置:首页 > PHP

php实现分页

2026-01-12 12:42:08PHP

PHP实现分页的基本方法

使用LIMITOFFSET进行数据库查询分页。通过计算当前页码和每页显示数量,动态生成SQL语句。

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

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

计算总页数

获取总记录数并计算总页数,用于生成分页导航。

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

生成分页导航链接

创建分页导航HTML,包含页码链接和上一页/下一页按钮。

echo '<div class="pagination">';
if ($page > 1) {
    echo '<a href="?page='.($page - 1).'">上一页</a>';
}

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

if ($page < $totalPages) {
    echo '<a href="?page='.($page + 1).'">下一页</a>';
}
echo '</div>';

使用预处理语句防止SQL注入

改进查询方式,使用预处理语句提高安全性。

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

分页样式优化

添加CSS样式美化分页导航,提高用户体验。

.pagination {
    margin: 20px 0;
    text-align: center;
}
.pagination a {
    display: inline-block;
    padding: 8px 16px;
    margin: 0 4px;
    border: 1px solid #ddd;
    text-decoration: none;
    color: #333;
}
.pagination a.active {
    background-color: #4CAF50;
    color: white;
    border: 1px solid #4CAF50;
}
.pagination a:hover:not(.active) {
    background-color: #ddd;
}

分页类封装

创建可重用的分页类,简化分页逻辑。

php实现分页

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

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

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

    public function getLimit() {
        return $this->perPage;
    }

    public function render() {
        $totalPages = ceil($this->total / $this->perPage);
        $html = '<div class="pagination">';

        if ($this->page > 1) {
            $html .= '<a href="?page='.($this->page - 1).'">上一页</a>';
        }

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

        if ($this->page < $totalPages) {
            $html .= '<a href="?page='.($this->page + 1).'">下一页</a>';
        }

        $html .= '</div>';
        return $html;
    }
}

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

相关文章

vue实现下拉分页思想

vue实现下拉分页思想

实现下拉分页的基本思想 下拉分页(Infinite Scroll)是一种常见的分页加载方式,当用户滚动到页面底部时自动加载下一页数据。Vue 中可以通过监听滚动事件或使用第三方库实现。 监听滚动事件…

php实现文件下载

php实现文件下载

PHP实现文件下载的方法 通过PHP实现文件下载功能,可以采用多种方式,以下是几种常见的实现方法: 使用header()函数强制下载 设置HTTP头信息,强制浏览器下载文件而非直接打开: $fi…

php 实现文件下载

php 实现文件下载

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

php 队列的实现

php 队列的实现

PHP 队列的实现方法 使用数据库实现队列 创建一个数据表存储队列任务,包含任务ID、状态、创建时间等字段。通过SQL语句实现任务的入队和出队操作。 // 入队操作 INSERT INTO queu…

php mvc实现

php mvc实现

PHP MVC 实现步骤 模型(Model)层 模型负责数据处理和业务逻辑,通常与数据库交互。创建一个基类模型,其他具体模型继承它。 class Model { protected $db;…

php数组实现

php数组实现

PHP 数组的基本实现 PHP 数组是一种非常灵活的数据结构,可以存储多个值,并且支持多种类型的键(整数或字符串)。PHP 数组实际上是有序映射(ordered map),可以看作是列表(vector…