当前位置:首页 > 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"或缓存策略。

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

相关文章

vue搜索过后实现分页

vue搜索过后实现分页

实现 Vue 搜索后分页的方法 数据绑定与搜索逻辑 在 Vue 组件中定义数据属性,包括原始数据列表、搜索关键词、分页相关参数: data() { return { originalLi…

vue  实现分页

vue 实现分页

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

jquery代码

jquery代码

以下是关于jQuery代码的常见用法和示例,涵盖基础操作、事件处理、DOM操作等核心功能: 基础语法 jQuery通过$()函数选择元素,支持CSS选择器语法: // 选择所有<p>元…

vue router实现分页

vue router实现分页

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

css网页制作代码

css网页制作代码

以下是一些常用的CSS网页制作代码示例,涵盖布局、样式和交互效果: 基础布局与样式 重置浏览器默认样式 * { margin: 0; padding: 0; box-sizing: b…

vue分页插件实现

vue分页插件实现

Vue 分页插件实现方法 使用现成组件库(推荐) Element UI、Ant Design Vue 等主流库已提供成熟分页组件,可直接集成: <template> <el-p…