2011-03-04 62 views
-1

我有一個SQL查詢,輸出一堆符合特定條件的行。我正在嘗試爲此過程添加分頁,以便使用更簡單。添加PHP分頁

我的過程是這樣的:

  • 圖此頁面的下限,弄清楚該網頁的上限
  • 拉(例如1 - - 20 21 40等。)從MySQL表
  • 列表中的那些行
  • 如果有超過20個,這些行添加
  • floor($totalRows/20)頁???
  • 分頁

我分頁似乎是工作半正常,但最後一頁(不管它可能是)列出了比它應該行的數量少一個。這裏是我的代碼:

$page = $_GET["p"]; 
    $bL = (($page - 1) * 20) + 1; 
    $tL = $page * 20; 

    $total = mysql_num_rows(mysql_query("SELECT id FROM coupons WHERE zone = '$zone' AND dateExp > CURDATE()")); 

    if($tL > $total) 
    { 
     $tL = (($page - 1) * 20) + ($total % 20); 
    } 

    $gotRows = "SELECT * FROM coupons WHERE zone = '$zone' AND dateExp > CURDATE() ORDER BY retailerName LIMIT " . $bL . ", " . $tL; 

    //list all those rows 

    $numPages = floor($total/20) + 1; 
    echo "<p id='results'>" . $total . " result" . $plural . " &#183; Displaying " . $bL . " to " . $tL . " </p>"; 
    echo "</table>"; 
    $pG = 1; 
    while($pG <= $numPages) 
    { 
     if($pG == $page) 
     { 
      echo $pG; 
     } 
     else 
     { 
      echo "<a href='zone?z=" . $zone . "&p=" . $pG . "'>" . $pG . "</a>"; 
     } 
     if($pG != $numPages) 
     { 
      echo "&#183"; 
     } 
     $pG = $pG + 1; 
    } 

任何幫助嗎?

編輯:沒關係,我解決了行問題。但是我的底部錯誤頁面鏈接問題仍然存在。在第1頁上,它工作正常 - 「1」不是鏈接,「2」是。但是,在第2頁上,鏈接僅顯示「1」。 「2」不顯示。

+0

關於如何處理PHP/MySQL分頁有很多問題..你有沒有看過這些? – drudge 2011-03-04 19:22:25

+0

現在分頁工作正常 - 我只是想修復我的頁面鏈接錯誤。 – AKor 2011-03-04 19:29:41

回答

1

這個邏輯混淆了我。如果$tl大於總數,它不會簡單地等於總數嗎?

if($tL > $total) 
{ 
    $tL = (($page - 1) * 20) + ($total % 20); 
} 

相反,爲什麼不:

$tL = ($tL > $total) ? $total : $tl; 

而且,我會用SQL來找到你,而不是總的mysql_num_rows。它應該證明更可靠一點(特別是當你停止使用真正的舊的mysql擴展時)。也許它也會返回正確的總數。

SELECT COUNT(id) FROM coupons WHERE zone = '$zone' AND dateExp > CURDATE() 

除此之外,我沒有看到任何明顯的解釋不正確的行數。

+0

我改變了這些。我提交這個問題後,我的行很好地運行。現在我唯一的問題是生成頁面鏈接的循環工作不正常。 – AKor 2011-03-04 19:30:25