如果你知道你有2个数据库项目,那么你的分页每页5个。如果用户请求页面,您如何知道该页面是否存在?我试图制作它,如果有人请求一个页面,并且该页面上没有项目,默认为第1页。所以,如果我请求第2页,它应默认为第1页。我当时认为这将是一些数学,但不是很确定。
答案 0 :(得分:1)
$requestedPage = (int)$_GET['page'];
if ( ceil( $numResults / $perPage ) < $requestedPage ) {
$requestedPage = 1;
}
答案 1 :(得分:0)
严格地说,您无法阻止用户手动输入超出范围的值 所以,作为你,我只是不在乎。
只是给他一个空白页面
答案 2 :(得分:0)
当您查询第二页的数据时,如果结果为空,则转到第一页。
答案 3 :(得分:0)
对于每个请求,您将行的count()除以每页的数量,并将其四舍五入到最接近的整数。
这将为您提供总页数。在每次请求之前,您检查请求页面是否为&lt; =到最后一页。
以下是一些有用的功能,例如:
private function countRecords() {
$this->recordCount = count($this->data);
return;
}
private function calcPages() {
$this->totalPages = ceil( $this->recordCount / $this->perPage );
return;
}
private function checkCurrent() {
$this->currentPage = ($this->currentPage > $this->totalPages ?
$this->totalPages :
$this->currentPage);
$this->currentPage = ($this->currentPage < 1 ? 1 : $this->currentPage);
return;
}
private function calcOffset() {
$this->offset = ($this->currentPage - 1) * $this->perPage;
}
答案 4 :(得分:0)
一个简单的实现只是检查数据库是否返回任何行。你没有提到你的数据库服务器或你的框架的界面,所以我不能给你任何真正的代码,但粗略地说:
if(num_rows($query) == 0 && $page != 1) {
redirect_to_page_one() && return;
}
你当然可以透明地做而不是做重定向,但这开始变得有些难以理解。