php分页代码简单实现
基本分页逻辑实现
分页的核心是通过SQL的LIMIT子句实现数据分段查询。假设每页显示10条数据,当前页码为$page:
$perPage = 10; // 每页条数
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1; // 当前页码
$offset = ($page - 1) * $perPage; // 计算偏移量
// 查询当前页数据
$sql = "SELECT * FROM your_table LIMIT $offset, $perPage";
$result = mysqli_query($conn, $sql);
计算总页数
需要先获取数据总量才能计算总页数:
$totalQuery = "SELECT COUNT(*) as total FROM your_table";
$totalResult = mysqli_query($conn, $totalQuery);
$totalRow = mysqli_fetch_assoc($totalResult);
$totalPages = ceil($totalRow['total'] / $perPage);
生成分页链接
创建可点击的分页导航链接:
echo '<div class="pagination">';
for ($i = 1; $i <= $totalPages; $i++) {
$active = ($i == $page) ? 'active' : '';
echo "<a href='?page=$i' class='$active'>$i</a>";
}
echo '</div>';
完整示例代码
结合数据库连接和样式的基本实现:
<?php
$conn = mysqli_connect("localhost", "username", "password", "database");
$perPage = 10;
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$offset = ($page - 1) * $perPage;
// 获取当前页数据
$sql = "SELECT * FROM articles LIMIT $offset, $perPage";
$result = mysqli_query($conn, $sql);
// 显示数据
while ($row = mysqli_fetch_assoc($result)) {
echo "<h3>{$row['title']}</h3>";
echo "<p>{$row['content']}</p>";
}
// 计算总页数
$totalResult = mysqli_query($conn, "SELECT COUNT(*) as total FROM articles");
$totalRow = mysqli_fetch_assoc($totalResult);
$totalPages = ceil($totalRow['total'] / $perPage);
// 生成分页链接
echo '<div class="pagination">';
for ($i = 1; $i <= $totalPages; $i++) {
$active = ($i == $page) ? 'active' : '';
echo "<a href='?page=$i' class='$active'>$i</a>";
}
echo '</div>';
mysqli_close($conn);
?>
样式优化建议
为分页链接添加基础CSS样式:
.pagination {
margin-top: 20px;
}
.pagination a {
display: inline-block;
padding: 8px 16px;
margin: 0 4px;
border: 1px solid #ddd;
text-decoration: none;
}
.pagination a.active {
background-color: #4CAF50;
color: white;
border: 1px solid #4CAF50;
}
注意事项
- 务必对
$_GET['page']进行类型转换和验证,防止SQL注入 - 大型数据集建议使用缓存机制优化性能
- 实际项目中建议将分页逻辑封装成可复用函数或类






