当前位置:首页 > PHP

php分页实现代码

2026-01-29 04:35:29PHP

PHP 分页实现代码

分页是Web开发中常见的功能,用于将大量数据分割成多个页面显示。以下是几种常见的PHP分页实现方法。

基础分页实现

使用MySQL的LIMIT子句结合PHP计算分页参数:

<?php
// 数据库连接
$db = new mysqli('localhost', 'username', 'password', 'database');

// 每页显示数量
$perPage = 10;

// 当前页码(从URL获取)
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$start = ($page > 1) ? ($page - 1) * $perPage : 0;

// 查询总记录数
$total = $db->query("SELECT COUNT(*) FROM table")->fetch_row()[0];

// 查询当前页数据
$result = $db->query("SELECT * FROM table LIMIT $start, $perPage");

// 显示数据
while ($row = $result->fetch_assoc()) {
    echo $row['column_name'] . "<br>";
}

// 计算总页数
$totalPages = ceil($total / $perPage);

// 生成分页链接
for ($i = 1; $i <= $totalPages; $i++) {
    echo "<a href='?page=$i'>$i</a> ";
}

// 关闭连接
$db->close();
?>

使用PDO实现分页

PDO提供了更安全的数据库操作方式:

<?php
try {
    $pdo = new PDO('mysql:host=localhost;dbname=database', 'username', 'password');

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

    // 查询总记录数
    $stmt = $pdo->query("SELECT COUNT(*) FROM table");
    $total = $stmt->fetchColumn();

    // 查询当前页数据
    $stmt = $pdo->prepare("SELECT * FROM table LIMIT :start, :perPage");
    $stmt->bindValue(':start', $start, PDO::PARAM_INT);
    $stmt->bindValue(':perPage', $perPage, PDO::PARAM_INT);
    $stmt->execute();

    // 显示数据
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        echo $row['column_name'] . "<br>";
    }

    // 分页导航
    $totalPages = ceil($total / $perPage);
    for ($i = 1; $i <= $totalPages; $i++) {
        echo "<a href='?page=$i'>$i</a> ";
    }

} catch (PDOException $e) {
    echo "Error: " . $e->getMessage();
}
?>

封装分页类

可以创建一个可重用的分页类:

<?php
class Pagination {
    private $db;
    private $perPage;
    private $page;

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

    public function getData($table) {
        $start = ($this->page > 1) ? ($this->page - 1) * $this->perPage : 0;
        $query = "SELECT * FROM $table LIMIT $start, $this->perPage";
        return $this->db->query($query);
    }

    public function getLinks($table) {
        $total = $this->db->query("SELECT COUNT(*) FROM $table")->fetch_row()[0];
        $totalPages = ceil($total / $this->perPage);

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

        return $links;
    }
}

// 使用示例
$db = new mysqli('localhost', 'username', 'password', 'database');
$pagination = new Pagination($db);
$result = $pagination->getData('table');

while ($row = $result->fetch_assoc()) {
    echo $row['column_name'] . "<br>";
}

echo $pagination->getLinks('table');
$db->close();
?>

前端分页样式优化

可以结合Bootstrap等前端框架美化分页导航:

// 在getLinks方法中修改
public function getLinks($table) {
    $total = $this->db->query("SELECT COUNT(*) FROM $table")->fetch_row()[0];
    $totalPages = ceil($total / $this->perPage);

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

    return $links;
}

分页性能优化

对于大型数据集,可以考虑以下优化:

php分页实现代码

// 使用预处理语句防止SQL注入
$stmt = $db->prepare("SELECT * FROM table LIMIT ?, ?");
$stmt->bind_param('ii', $start, $perPage);
$stmt->execute();
$result = $stmt->get_result();

// 添加索引加速COUNT查询
ALTER TABLE table ADD INDEX (id);

// 缓存总记录数
$cache = new Memcached();
$cache->addServer('localhost', 11211);
$total = $cache->get('total_records');
if (!$total) {
    $total = $db->query("SELECT COUNT(*) FROM table")->fetch_row()[0];
    $cache->set('total_records', $total, 3600);
}

以上代码提供了从基础到进阶的PHP分页实现方案,可以根据项目需求选择合适的实现方式。

标签: 分页代码
分享给朋友:

相关文章

vue分页实现

vue分页实现

实现Vue分页的几种方法 使用Element UI的分页组件 安装Element UI库后,可以直接使用其分页组件。以下是一个基本示例: <template> <div>…

vue  实现分页

vue 实现分页

实现分页的基本思路 在Vue中实现分页通常需要结合后端API返回的数据和前端的分页组件。分页的核心逻辑包括计算总页数、处理当前页码变化以及触发数据请求。 分页组件示例 使用Element UI的分页…

vue 分页的实现

vue 分页的实现

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

vue router实现分页

vue router实现分页

使用 Vue Router 实现分页 在 Vue.js 项目中,可以通过 Vue Router 结合分页组件实现分页功能。以下是实现分页的几种方法: 使用路由参数传递页码 在路由配置中定义一个动态参…

php实现的分页

php实现的分页

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

vue实现后台分页

vue实现后台分页

Vue 实现后台分页的方法 分页组件与数据绑定 在 Vue 中实现后台分页通常需要结合分页组件和后端 API。使用 el-pagination(Element UI)或自定义分页组件,通过 v-mod…