下面是一个PHP分页类的完整攻略:
分页,是指将一段较长的数据分割成若干个小的数据块,以方便用户浏览,也叫翻页。常见于各种网站的查询结果、产品列表、文章列表等。
不分页可能会导致页面加载速度过慢,用户体验不佳;同时,对于长篇文章、产品列表等较为冗长的信息,通过分页能够更方便地进行相关信息之间的筛选和比较。
假设我们有一个数据库表student
,里面存储了一些学生的信息,我们需要使用PHP分页类来展示这些学生信息。
require_once 'Page.class.php'; // 引入分页类代码文件
$page = new Page(20, 5); // 实例化分页类对象,共20个学生信息,每页展示5个学生信息
$offset = $page->offset(); // 获取偏移量
$sql = "SELECT * FROM student LIMIT $offset, 5"; // 查询语句,每页展示5个学生信息
$result = mysqli_query($conn, $sql); // 执行查询
while ($row = mysqli_fetch_assoc($result)) {
// 显示查询结果内容
}
echo $page->render(); // 显示分页导航
class Page {
private $total; // 总记录数
private $numPerPage; // 每页记录数
private $pageNum; // 总页数
private $page; // 当前页数
/**
* 构造函数
* @param $total 总记录数
* @param $numPerPage 每页记录数
* @param $page 当前页数
*/
function __construct($total, $numPerPage = 10, $page = 1) {
$this->total = $total;
$this->numPerPage = $numPerPage;
$this->pageNum = ceil($total / $numPerPage);
$this->page = $this->getPage($page);
}
// 获取偏移量
public function offset() {
return ($this->page - 1) * $this->numPerPage;
}
// 获取分页导航
public function render() {
$pageHtml = '<ul class="pagination">';
if ($this->page > 1) {
$pageHtml .= '<li><a href="?page='.($this->page - 1).'">上一页</a></li>';
}
for ($i=1; $i<=$this->pageNum; $i++) {
if ($i == $this->page) {
$pageHtml .= '<li class="active"><a href="#">'.$i.'</a></li>';
} else {
$pageHtml .= '<li><a href="?page='.$i.'">'.$i.'</a></li>';
}
}
if ($this->page < $this->pageNum) {
$pageHtml .= '<li><a href="?page='.($this->page + 1).'">下一页</a></li>';
}
$pageHtml .= '</ul>';
return $pageHtml;
}
// 获取当前页数
private function getPage($page) {
if ($page < 1) {
$page = 1;
} elseif ($page > $this->pageNum) {
$page = $this->pageNum;
}
return $page;
}
}
以上代码为一个基础的PHP分页类,你可以根据自己的需求进行修改和优化。