我会详细讲解“又一个php 分页类实现代码”的完整攻略。
又一个php 分页类实现代码
什么是分页?
分页是指将一定量的数据进行切割,每次只显示其中一部分数据的方式,将多页面切成一个个子页面,以方便用户阅读。
为什么需要分页?
大数据的处理必须使用分页机制,可以将一部分数据流进行缓存,减轻服务器压力,并能有效地提高用户体验。
怎么实现分页?
本文主要介绍一个php 分页类的实现方法。
在使用分页类之前,需要用到以下4个变量和参数:
- $count 总记录数
- $page_size 每页显示的记录数
- $page 当前页
- $page_count 总页数
下面是一个示例代码:
class Page {
private $count = 0;
private $page_size = 10;
private $page = 1;
private $page_count = 1;
private $url = "/";
public function __construct($count, $page_size = 10, $page = 1, $url = "/") {
$this->count = $count;
$this->page_size = $page_size;
$this->page = $page;
$this->url = $url;
$this->page_count = ceil($this->count / $this->page_size);
}
public function start_index() {
return ($this->page - 1) * $this->page_size;
}
public function end_index() {
$end = $this->page * $this->page_size - 1;
return ($end > $this->count) ? $this->count - 1 : $end;
}
public function show() {
$html = '';
if ($this->page_count > 1) {
$html .= '<div class="pagination">';
if ($this->page > 1) {
$html .= "<a href=\"{$this->url}?page=" . ($this->page - 1) . "\">上一页</a>";
}
$html .= "<span>{$this->page}/{$this->page_count}</span>";
if ($this->page < $this->page_count) {
$html .= "<a href=\"{$this->url}?page=" . ($this->page + 1) . "\">下一页</a>";
}
$html .= '</div>';
}
return $html;
}
}
该类的作用为计算分页的信息和生成分页展示的HTML代码。使用示例如下:
$mysqli = new mysqli("localhost", "root", "password", "database");
$result = $mysqli->query("SELECT COUNT(*) FROM tablename");
$row = $result->fetch_array();
$count = $row[0];
$page = isset($_GET['page']) ? intval($_GET['page']) : 1;
$page_size = 10; // 每页显示多少条数据
$pager = new Page($count, $page_size, $page, "/list.php");
$start_index = $pager->start_index();
$end_index = $pager->end_index();
$sql = "SELECT * FROM tablename LIMIT {$start_index}, {$page_size}";
$result = $mysqli->query($sql);
while ($row = $result->fetch_array()) {
echo $row['id'] . ' - ' . $row['title'] . '<br/>';
}
echo $pager->show();
以上代码中,使用了mysqli的query方法获取总记录数,通过实例化Page类计算得到总页数和生成分页HTML代码,再通过LIMIT关键字取得分页数据,最终将分页展示的HTML代码输出到页面中即可。
示例说明
示例1
假设有一个名为“goods”的数据表,表中有100条记录,现在需要实现分页功能,每页显示10条记录。
首先,我们需要获取总记录数:
$mysqli = new mysqli("localhost", "root", "password", "database");
$result = $mysqli->query("SELECT COUNT(*) FROM goods");
$row = $result->fetch_array();
$count = $row[0];
然后,实例化Page类,并指定每页显示10条记录,当前页为1,分页URL为“/list.php”:
$page_size = 10;
$page = 1;
$pager = new Page($count, $page_size, $page, "/list.php");
接下来,计算取数据时的起始和终止下标:
$start_index = $pager->start_index();
$end_index = $pager->end_index();
最后,使用LIMIT关键字获取分页数据,并将分页展示的HTML代码输出到页面中:
$sql = "SELECT * FROM goods LIMIT {$start_index}, {$page_size}";
$result = $mysqli->query($sql);
while ($row = $result->fetch_array()) {
echo $row['id'] . ' - ' . $row['name'] . '<br/>';
}
echo $pager->show();
示例2
假设有一个名为“students”的数据表,表中有200条记录,现在需要实现分页功能,每页显示15条记录。
首先,我们需要获取总记录数:
$mysqli = new mysqli("localhost", "root", "password", "database");
$result = $mysqli->query("SELECT COUNT(*) FROM students");
$row = $result->fetch_array();
$count = $row[0];
然后,实例化Page类,并指定每页显示15条记录,当前页为3,分页URL为“/list.php”:
$page_size = 15;
$page = 3;
$pager = new Page($count, $page_size, $page, "/list.php");
接下来,计算取数据时的起始和终止下标:
$start_index = $pager->start_index();
$end_index = $pager->end_index();
最后,使用LIMIT关键字获取分页数据,并将分页展示的HTML代码输出到页面中:
$sql = "SELECT * FROM students LIMIT {$start_index}, {$page_size}";
$result = $mysqli->query($sql);
while ($row = $result->fetch_array()) {
echo $row['id'] . ' - ' . $row['name'] . '<br/>';
}
echo $pager->show();
以上两个示例使用了不同的数据表和分页参数,但是分页类的实现方法和使用方法都是一致的。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:又一个php 分页类实现代码 - Python技术站