当前位置:首页 > PHP

利用php实现分页

2026-02-16 04:42:02PHP

实现分页功能

分页功能通常需要结合数据库查询和前端展示。以下是一个基于PHP和MySQL的分页实现方法:

获取总记录数

计算数据库中符合条件的总记录数,用于确定总页数:

$sql = "SELECT COUNT(*) as total FROM your_table";
$result = $conn->query($sql);
$row = $result->fetch_assoc();
$total_records = $row['total'];

计算分页参数

根据当前页码和每页显示数量计算分页参数:

$records_per_page = 10;
$total_pages = ceil($total_records / $records_per_page);

$current_page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
if ($current_page < 1) $current_page = 1;
if ($current_page > $total_pages) $current_page = $total_pages;

$offset = ($current_page - 1) * $records_per_page;

查询当前页数据

使用LIMIT子句获取当前页的数据:

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

显示分页导航

生成分页导航链接:

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

for ($i = 1; $i <= $total_pages; $i++) {
    if ($i == $current_page) {
        echo '<span class="current">'.$i.'</span>';
    } else {
        echo '<a href="?page='.$i.'">'.$i.'</a>';
    }
}

if ($current_page < $total_pages) {
    echo '<a href="?page='.($current_page+1).'">Next</a>';
}
echo '</div>';

完整示例代码

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

// 获取总记录数
$sql = "SELECT COUNT(*) as total FROM products";
$result = $conn->query($sql);
$row = $result->fetch_assoc();
$total_records = $row['total'];

// 分页参数
$records_per_page = 5;
$total_pages = ceil($total_records / $records_per_page);

$current_page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
if ($current_page < 1) $current_page = 1;
if ($current_page > $total_pages) $current_page = $total_pages;

$offset = ($current_page - 1) * $records_per_page;

// 获取当前页数据
$sql = "SELECT * FROM products LIMIT $offset, $records_per_page";
$result = $conn->query($sql);

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

// 分页导航
echo '<div class="pagination">';
if ($current_page > 1) {
    echo '<a href="?page='.($current_page-1).'">Previous</a>';
}

for ($i = 1; $i <= $total_pages; $i++) {
    if ($i == $current_page) {
        echo '<span class="current">'.$i.'</span>';
    } else {
        echo '<a href="?page='.$i.'">'.$i.'</a>';
    }
}

if ($current_page < $total_pages) {
    echo '<a href="?page='.($current_page+1).'">Next</a>';
}
echo '</div>';

$conn->close();
?>

使用预处理语句的安全版本

为防止SQL注入,建议使用预处理语句:

// 获取总记录数
$stmt = $conn->prepare("SELECT COUNT(*) as total FROM products");
$stmt->execute();
$result = $stmt->get_result();
$row = $result->fetch_assoc();
$total_records = $row['total'];

// 获取当前页数据
$stmt = $conn->prepare("SELECT * FROM products LIMIT ?, ?");
$stmt->bind_param("ii", $offset, $records_per_page);
$stmt->execute();
$result = $stmt->get_result();

分页样式建议

可以添加CSS美化分页导航:

利用php实现分页

.pagination {
    margin-top: 20px;
}
.pagination a, .pagination span {
    padding: 8px 16px;
    margin: 0 4px;
    border: 1px solid #ddd;
    text-decoration: none;
    color: #333;
}
.pagination a:hover {
    background-color: #f5f5f5;
}
.pagination .current {
    background-color: #4CAF50;
    color: white;
    border: 1px solid #4CAF50;
}

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

相关文章

vue实现分页功能

vue实现分页功能

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

php实现mysql

php实现mysql

PHP 连接 MySQL 的基本方法 PHP 提供了多种方式与 MySQL 数据库进行交互,以下是最常用的几种方法。 使用 MySQLi 扩展 MySQLi 是 MySQL 的改进扩展,支持面向对…

php验证码的实现

php验证码的实现

PHP 验证码实现方法 使用 GD 库生成基础验证码 创建画布并生成随机字符串作为验证码内容: session_start(); $width = 120; $height = 40; $image…

php 实现类

php 实现类

PHP 类的基本实现 在 PHP 中,类通过 class 关键字定义,后跟类名和一对花括号。类名通常遵循大驼峰命名法(如 ClassName)。以下是基本语法: class ClassName {…

php mvc实现

php mvc实现

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

php redis 队列实现

php redis 队列实现

PHP Redis 队列实现 Redis 是一个高性能的键值存储系统,常被用作消息队列。以下是使用 PHP 和 Redis 实现队列的几种方法。 安装依赖 确保已安装 PHP Redis 扩展。可以…