当前位置:首页 > PHP

php分页代码简单实现

2026-01-13 13:01:56PHP

基本分页实现

在PHP中实现分页功能通常需要结合MySQL的LIMIT子句。以下是一个基础实现示例:

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

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

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

// 获取总记录数
$totalQuery = "SELECT COUNT(*) FROM your_table";
$totalResult = mysqli_query($conn, $totalQuery);
$totalRows = mysqli_fetch_row($totalResult)[0];
$totalPages = ceil($totalRows / $perPage);

// 获取当前页数据
$query = "SELECT * FROM your_table LIMIT $start, $perPage";
$result = mysqli_query($conn, $query);

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

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

使用PDO实现分页

PDO方式更安全,推荐使用:

php分页代码简单实现

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

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

// 获取总记录数
$stmt = $pdo->query("SELECT COUNT(*) FROM your_table");
$totalRows = $stmt->fetchColumn();
$totalPages = ceil($totalRows / $perPage);

// 获取当前页数据
$stmt = $pdo->prepare("SELECT * FROM your_table LIMIT :offset, :perPage");
$stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
$stmt->bindValue(':perPage', $perPage, PDO::PARAM_INT);
$stmt->execute();

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

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

分页样式优化

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

php分页代码简单实现

<style>
.pagination {
    display: inline-block;
    margin: 20px 0;
}
.pagination a {
    color: black;
    float: left;
    padding: 8px 16px;
    text-decoration: none;
    border: 1px solid #ddd;
}
.pagination a.active {
    background-color: #4CAF50;
    color: white;
    border: 1px solid #4CAF50;
}
.pagination a:hover:not(.active) {
    background-color: #ddd;
}
</style>

<div class="pagination">
    <?php for ($i = 1; $i <= $totalPages; $i++): ?>
        <a href="?page=<?= $i ?>" <?= ($i == $page) ? 'class="active"' : '' ?>><?= $i ?></a>
    <?php endfor; ?>
</div>

分页函数封装

可以将分页逻辑封装为可重用函数:

function getPaginationData($table, $perPage = 10, $pageParam = 'page') {
    global $pdo;

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

    $totalStmt = $pdo->query("SELECT COUNT(*) FROM $table");
    $totalRows = $totalStmt->fetchColumn();
    $totalPages = ceil($totalRows / $perPage);

    $stmt = $pdo->prepare("SELECT * FROM $table LIMIT :offset, :perPage");
    $stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
    $stmt->bindValue(':perPage', $perPage, PDO::PARAM_INT);
    $stmt->execute();

    return [
        'data' => $stmt->fetchAll(PDO::FETCH_ASSOC),
        'current_page' => $page,
        'total_pages' => $totalPages,
        'total_rows' => $totalRows
    ];
}

// 使用示例
$result = getPaginationData('your_table');
foreach ($result['data'] as $row) {
    echo $row['column_name']."<br>";
}

分页安全注意事项

为防止SQL注入,务必使用参数化查询。避免直接将用户输入拼接到SQL语句中。

对于大型数据集,考虑添加索引优化查询性能。如果数据量极大(百万级以上),可能需要考虑更高级的分页技术如"seek method"或缓存策略。

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

相关文章

h5实现响应式代码

h5实现响应式代码

响应式设计基础 HTML5实现响应式设计主要通过媒体查询(Media Queries)、弹性布局(Flexbox)、网格布局(Grid)和视口设置(Viewport Meta Tag)等技术。核心目标…

vue  实现分页

vue 实现分页

实现分页功能 在Vue中实现分页功能通常需要结合后端API或前端数据处理。以下是两种常见的实现方式: 前端分页实现 适用于数据量较小的情况,所有数据一次性加载到前端后进行分页处理: <…

php实现分页功能

php实现分页功能

PHP实现分页功能的方法 数据库查询与分页逻辑 使用SQL的LIMIT和OFFSET实现分页。假设每页显示10条数据,当前页码为$page: $perPage = 10; $page = isse…

php实现的分页

php实现的分页

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

uniapp 分页组件

uniapp 分页组件

uniapp 分页组件实现方法 在uniapp中实现分页功能,可以通过自定义组件或使用第三方组件库完成。以下是几种常见实现方式: 自定义分页组件 创建一个名为uni-pagination的组件,模…

react如何实现分页

react如何实现分页

实现分页的基本思路 在React中实现分页通常需要以下几个核心步骤:管理当前页码状态、计算分页数据、渲染分页控件。以下是一个典型的分页实现方法。 管理分页状态 使用React的useState钩子…