这里是实现PHP分页类的攻略。
第一步:创建类文件
首先,我们需要拥有一个类文件,定义一个Pagination类。该类具有以下属性:
- $pageNums:总页数
- $pageSize:每页显示数据的数量
- $currentPage:当前页面
- $totalNums:总记录数
除此之外,类中还需要包含公共方法用于获取总页数、总记录数及当前页数据。
class Pagination {
public $pageNums;
public $pageSize;
public $currentPage;
public $totalNums;
function __construct($pdo, $table, $pageSize) {
$sql = "SELECT COUNT(*) AS count FROM $table";
$result = $pdo->query($sql)->fetch(PDO::FETCH_ASSOC);
$this->pageSize = $pageSize;
$this->totalNums = $result['count'];
$this->pageNums = ceil($this->totalNums / $this->pageSize);
$this->currentPage = isset($_GET['page']) ? $_GET['page'] : 1;
}
public function getOffset() {
return ($this->currentPage - 1) * $this->pageSize;
}
public function getPageData($pdo, $table) {
$offset = $this->getOffset();
$sql = "SELECT * FROM $table LIMIT $this->pageSize OFFSET $offset";
$stmt = $pdo->prepare($sql);
$stmt->execute();
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
}
第二步:使用类文件
下面是如何使用Pagination类的一个示例:
<?php
$pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'user', 'pass');
$table = 'posts';
$pageSize = 10;
$pagination = new Pagination($pdo, $table, $pageSize);
$pageData = $pagination->getPageData($pdo, $table);
?>
<!-- 在HTML中显示分页 -->
<div class="pagination">
<?php for ($i = 1; $i <= $pagination->pageNums; $i++):?>
<a href="?page=<?php echo $i;?>" <?php if($i==$pagination->currentPage) echo 'class="active"';?>><?php echo $i;?></a>
<?php endfor;?>
</div>
<!-- 显示当前页面数据 -->
<div class="data">
<?php foreach ($pageData as $data):?>
<div class="post">
<h2><?php echo $data['title'];?></h2>
<p><?php echo $data['content'];?></p>
</div>
<?php endforeach;?>
</div>
这里使用了PDO连接到数据库,并定义了要查询的数据表 $table 及每页显示的数据数量 $pageSize 。然后,在构造函数中计算出总页数及设置当前页面。接着,getPageData() 方法用于获取当前页面的数据。在HTML中,可以通过 $pagination->pageNums 获取总页数,在循环中输出链接,将当前页面的链接加上 class="active" 属性。在 $pageData 中存储了当前页面的数据,在循环中显示该数据。
下面是另一个示例,该示例中 $table 取得了输入参数,允许在不同的表格中应用该分页类。
<?php
$table = isset($_GET['table']) ? $_GET['table'] : 'posts';
$pageSize = 10;
$pagination = new Pagination($pdo, $table, $pageSize);
$pageData = $pagination->getPageData($pdo, $table);
?>
<!-- 在HTML中显示分页 -->
<div class="pagination">
<?php for ($i = 1; $i <= $pagination->pageNums; $i++):?>
<a href="?page=<?php echo $i;?>&table=<?php echo $table;?>" <?php if($i==$pagination->currentPage) echo 'class="active"';?>><?php echo $i;?></a>
<?php endfor;?>
</div>
<!-- 显示当前页面数据 -->
<div class="data">
<?php foreach ($pageData as $data):?>
<div class="post">
<h2><?php echo $data['title'];?></h2>
<p><?php echo $data['content'];?></p>
</div>
<?php endforeach;?>
</div>
这里通过检查 $_GET 来获取想要查询的表格名 $table 。注意,我们在每个链接中传递了 $table 变量,以便在从另一个页面链接时继续使用 $table。其他部分与前面的示例相同。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP实现简单实用的分页类代码 - Python技术站