繁体   English   中英

PHP分页获取最后一页

[英]PHP Pagination Get Last Page

基本上,我试图获取最后一页...有时它很好,但是随后说输入一些数据,然后又得到了错误的页面,输入了更多数据,然后出现了正确的页面,我很确定这与它有关$ r部分。 还有更多,但这是主要部分。 我想我只是在使用错误的数学或函数,请帮忙。

$limit = 10;
if($_GET['page'] == 0 OR $_GET['page'] == 1) {
    $offset = 0;
} else {
    $offset = $limit * $_GET['page'] - $limit;
}
$next = $_GET['page'] + 1;
$back = $_GET['page'] - 1;

$stmt = $db->prepare("SELECT * FROM users");
$stmt->execute();
$count = $stmt->rowCount();

if($count < $limit) {
    $last = 1;
}

$r = $count % $limit;
if($r < 5) {
    $last = ceil($count / $limit);
} else {
    if($r >= 5) {
        $last = floor($count / $limit);
    }
}

if($_GET['page'] == 0 or $_GET['page'] == 1) {
    if (0 >= $last) {
        $page = 0;
    }
    if (1 >= $last) {
        $page = 1;
    }
}

首先,您正在使用一些非常混乱的代码,这可能就是为什么您对奇怪的错误感到困惑和绊脚石的原因。 例如, 0 >= $last$last <= 01 >= $last$last <= 1 所以基本上您的代码读取...

if ($last <= 0) {
    $page = 0;
}

if ($last <= 1) {
    $page = 1;
}

如果您考虑到这一点,则意味着$last <= 1$page 始终1 您的条件都不 - ,因此两个条件都可以满足。 这几乎没有道理。 特别是因为在任何给定条件下,实际上不应期望$last 等于 1或更多( $page始终为1 )。

另外,你的逻辑floorceil $last几乎是有道理的。 实际上,根据$r的值,您实际上不想执行任何一个操作。 无论如何,您只是一直想ceil

这个想法是,如果您有10件或更少的东西,并且每页最多放置10件东西,那么您知道只需要一页。 当您有11件事时,问题就开始了。 现在您需要2页,因为多余的1件事仍然超出了每页10张的限制。 因此,如果您真的考虑过这个问题,则意味着所需的页面数始终与 ceil($count / $limit) 永远不会给这个数字设下限。

因为ceil(16 / 10) == 2 ,但是根据您的逻辑,您将执行floor(16 / 10) ,实际上是1 但是,如果每页限制为10,则不能将16件东西放在一页上。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM