📅  最后修改于: 2023-12-03 15:33:40.877000             🧑  作者: Mango
在开发 Web 应用程序时,分页功能是非常常见的需求。通过分页,可以将大量数据划分成多个页面,提高页面加载速度和用户体验。本篇文章将介绍如何使用 PHP 实现分页功能,并且每页显示 3 条数据。
在开始编写代码之前,我们需要准备好以下工作:
首先,我们需要在数据库中创建一个数据表格,以存储需要分页的数据。表格的结构如下:
CREATE TABLE `books` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`author` varchar(255) NOT NULL,
`description` text NOT NULL,
`created_at` datetime DEFAULT NULL,
`updated_at` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
使用 PDO 连接数据库,代码如下:
try {
$dbh = new PDO('mysql:host=localhost;dbname=mydatabase', $user, $password);
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
其中,$user
和 $password
分别为数据库的用户名和密码。
使用 SQL 语句查询指定数量的数据,代码如下:
// 查询总记录数
$sql = "SELECT COUNT(*) FROM `books`";
$total_records = $dbh->query($sql)->fetchColumn();
// 每页显示 3 条数据
$limit = 3;
// 计算总页数
$total_pages = ceil($total_records / $limit);
// 获取当前页码
if (!isset($_GET['page'])) {
$page = 1;
} else {
$page = $_GET['page'];
}
// 计算当前页面的第一条数据的位置
$start = ($page - 1) * $limit;
// 查询当前页面的数据
$sql = "SELECT * FROM `books` LIMIT $start, $limit";
$stmt = $dbh->query($sql);
$books = $stmt->fetchAll(PDO::FETCH_ASSOC);
使用 PHP 分页算法实现分页功能,代码如下:
echo '<ul class="pagination">';
// 上一页
if ($page > 1) {
echo '<li><a href="?page=' . ($page - 1) . '">上一页</a></li>';
}
// 当前页的前两页
for ($i = $page - 2; $i < $page; $i++) {
if ($i > 0) {
echo '<li><a href="?page=' . $i . '">' . $i . '</a></li>';
}
}
// 当前页
echo '<li class="active"><a href="#">' . $page . '</a></li>';
// 当前页的后两页
for ($i = $page + 1; $i <= $total_pages && $i <= $page + 2; $i++) {
echo '<li><a href="?page=' . $i . '">' . $i . '</a></li>';
}
// 下一页
if ($page < $total_pages) {
echo '<li><a href="?page=' . ($page + 1) . '">下一页</a></li>';
}
echo '</ul>';
以上代码将会输出一个分页导航栏,可以让用户进行翻页操作。
本文介绍了如何使用 PHP 实现分页功能,并且每页显示 3 条数据。通过本文的介绍,读者可以掌握分页算法的实现以及如何连接数据库和查询数据。同时,读者也可以根据自己的需要对代码进行修改,以满足不同的分页需求。
参考资料: