php分页功能的实现
PHP 分页功能实现方法
使用 LIMIT 和 OFFSET 进行数据库查询
分页功能的核心是通过 SQL 查询的 LIMIT 和 OFFSET 子句实现。假设使用 MySQL 数据库,查询语句如下:
SELECT * FROM table_name LIMIT 10 OFFSET 20
对应的 PHP 代码示例:
$perPage = 10; // 每页显示数量
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$offset = ($page - 1) * $perPage;
$query = "SELECT * FROM table_name LIMIT $perPage OFFSET $offset";
$result = mysqli_query($connection, $query);
计算总页数
需要先获取总记录数才能计算总页数:
$totalQuery = "SELECT COUNT(*) as total FROM table_name";
$totalResult = mysqli_query($connection, $totalQuery);
$totalRow = mysqli_fetch_assoc($totalResult);
$totalPages = ceil($totalRow['total'] / $perPage);
生成分页链接
创建分页导航的 HTML:
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>';
使用预处理语句防止 SQL 注入
更安全的方式是使用预处理语句:
$stmt = $connection->prepare("SELECT * FROM table_name LIMIT ? OFFSET ?");
$stmt->bind_param("ii", $perPage, $offset);
$stmt->execute();
$result = $stmt->get_result();
添加上一页和下一页按钮
增强分页导航的用户体验:
if ($page > 1) {
echo "<a href='?page=".($page - 1)."'>上一页</a> ";
}
if ($page < $totalPages) {
echo "<a href='?page=".($page + 1)."'>下一页</a>";
}
使用 Bootstrap 美化分页
结合 Bootstrap 的分页样式:
echo '<nav aria-label="Page navigation"><ul class="pagination">';
echo '<li class="page-item'.($page == 1 ? ' disabled' : '').'">';
echo '<a class="page-link" href="?page='.($page - 1).'">上一页</a></li>';
for ($i = 1; $i <= $totalPages; $i++) {
$active = $i == $page ? ' active' : '';
echo '<li class="page-item'.$active.'">';
echo '<a class="page-link" href="?page='.$i.'">'.$i.'</a></li>';
}
echo '<li class="page-item'.($page == $totalPages ? ' disabled' : '').'">';
echo '<a class="page-link" href="?page='.($page + 1).'">下一页</a></li>';
echo '</ul></nav>';
使用 AJAX 实现无刷新分页
现代 Web 应用中常使用 AJAX 加载分页内容:

// jQuery 示例
$(document).on('click', '.pagination a', function(e) {
e.preventDefault();
var page = $(this).attr('href').split('page=')[1];
loadPage(page);
});
function loadPage(page) {
$.ajax({
url: 'get_data.php?page=' + page,
success: function(data) {
$('#content').html(data);
}
});
}
注意事项
- 始终验证和清理用户输入的页码值
- 对于大型数据集,考虑使用缓存优化性能
- 实现"首页"和"末页"链接提升用户体验
- 考虑添加页码输入框让用户直接跳转特定页
以上方法可以根据具体项目需求进行组合和调整,实现适合不同场景的分页功能。






