我正在尝试创建一个基于mysql表中的行数创建的动态页面链接。我想在每页显示10个结果,并希望让php脚本创建指向其他页面的链接。
所以我考虑使用num_rows并将其除以10然而如果我有53行,则返回将是5.3,因为我需要6页而不是5.我正在考虑使用round函数并将其循环a for I statement,直到$ pages> $ rows_rounded。并且每10行添加一个指向页面的链接($ i)这是实现这一目标的最佳方法还是可以选择更简单的方法?
答案 0 :(得分:1)
我制作的Pagenator课程。 getCurrentPages()返回您应该在数组中显示的所有页面。因此,如果您在第一页,并且您想要显示总共9页,您将获得阵列1-9。但是,如果你在第10页,你会得到一个6-14阵列。如果总共有20页并且你在第20页,那么你将得到11-20的数组。
<?php
class Lev_Pagenator {
private $recordsPerPage;
private $currentPage;
private $numberOfTotalRecords;
private $lastPage = null;
public function __construct($current_page, $number_of_total_records, $records_per_page = 25) {
$this->currentPage = $current_page;
$this->numberOfTotalRecords = $number_of_total_records;
$this->recordsPerPage = $records_per_page;
}
public function getCurrentStartIndex() {
return ($this->currentPage - 1) * $this->recordsPerPage;
}
public function getCurrentPages($number_of_pages_to_display = 9) {
$start_page = $this->currentPage - floor($number_of_pages_to_display / 2);
if ($start_page < 1) $start_page = 1;
$last_page = $this->getLastPage();
$pages = array($start_page);
for ($i = 1; $i < $number_of_pages_to_display; $i++) {
$temp_page = $start_page + $i;
if ($temp_page <= $last_page) {
$pages[] = $temp_page;
} else {
break;
}
}
return $pages;
}
public function getPreviousPage() {
if ($this->currentPage === 1) return false;
return $this->currentPage - 1;
}
public function getNextPage() {
if ($this->currentPage === $this->getLastPage) return false;
return $this->currentPage + 1;
}
public function getLastPage() {
if ($this->lastPage === null) $this->lastPage = ceil($this->numberOfTotalRecords / $this->recordsPerPage);
return $this->lastPage;
}
}
?>
编辑(使用):
<?php
$pagenator = new Lev_Pagenator($current_page, $number_of_total_records, $records_per_page);
$pages_array = $pagenator->getCurrentPages($number_of_pages_to_display);
?>
答案 1 :(得分:0)
for循环的想法听起来很好,你会使用类似的东西:
$rows_rounded = ceil(mysql_num_rows($result) / 10);
for($x = 1; $x <= $rows_rounded; $x++){
echo '<a href="/page-'.$x.'/'">Page '.$x.'</a>';
}
但是你需要考虑检测当前页面,所以如果当前页面是3,那么在for循环中测试它可能是个好主意,如果回显第3个链接可能会添加一些额外的类使你能够设计风格。