php实现分页功能
PHP实现分页功能的方法
数据库查询与分页逻辑
使用SQL的LIMIT和OFFSET实现分页。假设每页显示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++) {
echo '<a href="?page=' . $i . '">' . $i . '</a>';
}
echo '</div>';
样式优化与功能增强
添加CSS样式美化分页按钮,并增加“上一页”和“下一页”功能:
echo '<div class="pagination">';
if ($page > 1) {
echo '<a href="?page=' . ($page - 1) . '">上一页</a>';
}
for ($i = 1; $i <= $totalPages; $i++) {
$active = $i == $page ? 'active' : '';
echo '<a class="' . $active . '" href="?page=' . $i . '">' . $i . '</a>';
}
if ($page < $totalPages) {
echo '<a href="?page=' . ($page + 1) . '">下一页</a>';
}
echo '</div>';
安全性注意事项
防止SQL注入,建议使用预处理语句:

$stmt = $conn->prepare("SELECT * FROM your_table LIMIT ?, ?");
$stmt->bind_param("ii", $offset, $perPage);
$stmt->execute();
$result = $stmt->get_result();
封装为函数
将分页逻辑封装为可重用函数:
function paginate($conn, $table, $perPage = 10) {
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$offset = ($page - 1) * $perPage;
$stmt = $conn->prepare("SELECT * FROM $table LIMIT ?, ?");
$stmt->bind_param("ii", $offset, $perPage);
$stmt->execute();
return $stmt->get_result();
}
使用第三方库
对于复杂项目,可以考虑使用如Laravel的Paginator或Symfony的分页组件,简化开发流程。例如Laravel中的分页:
$users = DB::table('users')->paginate(15);
return view('user.index', ['users' => $users]);






