如果你知道你有2个数据库项目,每页5个。如果用户请求页面,您如何知道该页面是否存在?

时间:2011-03-14 22:37:51

标签: php

如果你知道你有2个数据库项目,那么你的分页每页5个。如果用户请求页面,您如何知道该页面是否存在?我试图制作它,如果有人请求一个页面,并且该页面上没有项目,默认为第1页。所以,如果我请求第2页,它应默认为第1页。我当时认为这将是一些数学,但不是很确定。

5 个答案:

答案 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;
}

你当然可以透明地做而不是做重定向,但这开始变得有些难以理解。