2013-06-30 51 views
0

我之前發佈了這個問題,但我不知道原因,但現在我知道了。另一個問題是失控的。PHP/MySQL SELECT LIMITER問題

我正在做一個頁面功能(下一頁等..),並需要我的$限制器來選擇每頁9個查詢。我遇到的問題是,第二頁(9,9)不進來,

if(isset($_GET["p"]) && is_numeric($_GET["p"]) && $_GET["p"] > 1) { 
     $currentPage = $_GET["p"]; 
     $limiter = $currentPage * 9; 
} else { 
     $currentPage = 1; 
     $limiter = 0; 
} 

$finalQuery = "SELECT * FROM forum_replies WHERE thread_id = '1' ORDER BY id ASC LIMIT " . $limiter . ",9"; 

所以,如果頁面是1,$限制爲0。所以.. 0,9進來

接下來應該是9,9但是,所以我頁面上缺少了兩次

頁面的代碼completley跳過三件作品是18,9

所以..它去0,9 - 18,9,27 ,9等。完全跳過9,9。我將添加到我的if(isset))函數中,使其選擇所有,如果它不跳過9,9。

+0

在我的答案中閱讀評論你的假設是不正確的 – DevZer0

回答

1

如果我沒有錯,我認爲你的$ limiter變量的計算是不正確的。 它應該是$ limiter =($ currentPage - 1)* 9;

if(isset($_GET["p"]) && is_numeric($_GET["p"]) && $_GET["p"] > 1) { 
    $currentPage = $_GET["p"]; 
    $limiter = ($currentPage -1) * 9; 
} else { 
    $currentPage = 1; 
    $limiter = 0; 
} 

$finalQuery = "SELECT * FROM forum_replies WHERE thread_id = '1' ORDER BY id ASC LIMIT " . $limiter . ",9"; 
+0

完美!萬分感謝。 – Jayden

0

由於您的if condition,您缺少第1頁。

if(isset($_GET["p"]) && is_numeric($_GET["p"]) && $_GET["p"] > 1) { 

此設置跳過分頁邏輯,除非頁面大於1,所以它忽略頁= 1

根據您的代碼只有p是0程式碼會顯示0, 9如果p = 1那麼你的代碼呈現9,9

+0

沒有,因爲在IF之後,還有其他代碼說現在的頁面是1. Page 1不是第二頁的問題。 – Jayden

+0

你第二頁必須通過'p = 1'來渲染代碼9,9 – DevZer0

+0

有沒有辦法解決這個問題,所以起點可以是p = 1(0,9)p = 2(9,9)等.. – Jayden

0

嘗試修改此:

if(isset($_GET["p"]) && is_numeric($_GET["p"]) && $_GET["p"] > 1) { 

這樣:

if(isset($_GET["p"]) && is_numeric($_GET["p"]) && $_GET["p"] >= 1) { 

這:

$limiter = $currentPage * 9; 

這樣:

$limiter = ($currentPage-1) * 9; 

因爲如果$ currentPage是1,那麼您希望限制爲0,9。

+0

是的,謝謝你,這個人也是如此。 – Jayden

+0

他更快:)。請務必將$ _GET [「p」]> 1更改爲$ _GET [「p」]> = 1.乾杯! – ObiVanKaPudji