当前位置:首页 > 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中实现分页功能,通常需要父子组件之间的数据传递。以下是几种常见的传值方式: 使用props传递数据 父组件通过props向子组件传递当前页码和总页数等分页信息:…

vue实现下拉分页思想

vue实现下拉分页思想

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

h5实现响应式代码

h5实现响应式代码

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

vue 实现分页

vue 实现分页

分页实现方法 在Vue中实现分页功能,可以通过计算属性和方法结合来实现。以下是一个典型的分页实现方式: 模板部分 <template> <div> <ul…

vue router实现分页

vue router实现分页

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

css网页制作代码

css网页制作代码

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