php实现分页步骤
PHP实现分页的步骤
数据库查询与分页逻辑
获取当前页码,通常通过$_GET参数传递。默认设置为第一页:
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$perPage = 10; // 每页显示数量
$offset = ($page - 1) * $perPage;
查询数据库时使用LIMIT和OFFSET分页:
$sql = "SELECT * FROM table_name LIMIT $perPage OFFSET $offset";
$result = $conn->query($sql);
计算总页数
获取总记录数并计算总页数:
$total = $conn->query("SELECT COUNT(*) FROM table_name")->fetch_row()[0];
$totalPages = ceil($total / $perPage);
生成分页链接
创建分页导航HTML,包含页码和跳转链接:
echo '<div class="pagination">';
for ($i = 1; $i <= $totalPages; $i++) {
echo '<a href="?page=' . $i . '">' . $i . '</a>';
}
echo '</div>';
样式优化与功能增强
添加当前页高亮样式和禁用不可用链接:
echo '<div class="pagination">';
if ($page > 1) {
echo '<a href="?page=' . ($page - 1) . '">上一页</a>';
}
for ($i = 1; $i <= $totalPages; $i++) {
$active = $i == $page ? ' class="active"' : '';
echo '<a href="?page=' . $i . '"' . $active . '>' . $i . '</a>';
}
if ($page < $totalPages) {
echo '<a href="?page=' . ($page + 1) . '">下一页</a>';
}
echo '</div>';
安全性处理
对输入参数进行过滤和验证:
$page = filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT, [
'options' => [
'default' => 1,
'min_range' => 1
]
]);
完整示例代码
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$perPage = 10;
$offset = ($page - 1) * $perPage;
$sql = "SELECT * FROM table_name LIMIT $perPage OFFSET $offset";
$result = $conn->query($sql);
$total = $conn->query("SELECT COUNT(*) FROM table_name")->fetch_row()[0];
$totalPages = ceil($total / $perPage);
echo '<div class="pagination">';
if ($page > 1) {
echo '<a href="?page=' . ($page - 1) . '">上一页</a>';
}
for ($i = 1; $i <= $totalPages; $i++) {
$active = $i == $page ? ' class="active"' : '';
echo '<a href="?page=' . $i . '"' . $active . '>' . $i . '</a>';
}
if ($page < $totalPages) {
echo '<a href="?page=' . ($page + 1) . '">下一页</a>';
}
echo '</div>';






