簡體   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