php 分页怎么实现
PHP 分页实现方法
分页功能是Web开发中常见的需求,以下是几种常见的PHP分页实现方式。
基础分页实现
使用MySQL的LIMIT语句实现分页,结合PHP计算页码和偏移量。
// 数据库连接
$conn = new mysqli("localhost", "username", "password", "database");
// 每页显示数量
$perPage = 10;
// 当前页码
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$start = ($page - 1) * $perPage;
// 查询数据
$sql = "SELECT * FROM table_name LIMIT $start, $perPage";
$result = $conn->query($sql);
// 总记录数
$total = $conn->query("SELECT COUNT(*) FROM table_name")->fetch_row()[0];
// 总页数
$totalPages = ceil($total / $perPage);
// 显示分页链接
for ($i = 1; $i <= $totalPages; $i++) {
echo "<a href='?page=$i'>$i</a> ";
}
使用PDO实现分页
PDO提供更安全的数据库操作方式,防止SQL注入。
$pdo = new PDO("mysql:host=localhost;dbname=database", "username", "password");
$perPage = 10;
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$start = ($page - 1) * $perPage;
$stmt = $pdo->prepare("SELECT * FROM table_name LIMIT :start, :perPage");
$stmt->bindParam(':start', $start, PDO::PARAM_INT);
$stmt->bindParam(':perPage', $perPage, PDO::PARAM_INT);
$stmt->execute();
$total = $pdo->query("SELECT COUNT(*) FROM table_name")->fetchColumn();
$totalPages = ceil($total / $perPage);
使用Bootstrap美化分页
结合Bootstrap的分页组件,提升用户体验。
// 计算分页后添加以下代码
echo '<nav aria-label="Page navigation">
<ul class="pagination">';
if ($page > 1) {
echo '<li class="page-item"><a class="page-link" href="?page='.($page-1).'">Previous</a></li>';
}
for ($i = 1; $i <= $totalPages; $i++) {
$active = $i == $page ? 'active' : '';
echo '<li class="page-item '.$active.'"><a class="page-link" href="?page='.$i.'">'.$i.'</a></li>';
}
if ($page < $totalPages) {
echo '<li class="page-item"><a class="page-link" href="?page='.($page+1).'">Next</a></li>';
}
echo '</ul></nav>';
AJAX分页实现
使用jQuery实现无刷新分页。
// 前端代码
$(document).on('click', '.pagination a', function(e) {
e.preventDefault();
var page = $(this).attr('href').split('page=')[1];
fetch_data(page);
});
function fetch_data(page) {
$.ajax({
url: "pagination_ajax.php",
method: "POST",
data: {page: page},
success: function(data) {
$('#table_data').html(data);
}
});
}
// pagination_ajax.php
$page = $_POST['page'];
$perPage = 10;
$start = ($page - 1) * $perPage;
// 查询并返回数据
使用分页类库
对于复杂项目,可以使用现成的分页类库,如Zend\Paginator或Illuminate\Pagination。
// 使用Laravel的分页器
$users = DB::table('users')->paginate(15);
// 在视图中显示
{{ $users->links() }}
以上方法覆盖了从基础到高级的PHP分页实现,开发者可以根据项目需求选择合适的方式。







