2011-06-09 26 views
0

我正在做我的網站的第一個分頁執行。我覺得我非常接近,只是混淆了我的邏輯,或者誤認了某些變量的位置或實際價值。如何實施分頁項目的最後步驟?

下面是代碼:

    $pgsize_wave = 40; 
        $pg_wave = (is_numeric($_GET["p"]) ? $_GET["p"] : 1); 
        $start = ($pg_wave-1)*$pgsize_wave; 
        $waves = mysql_query("SELECT * FROM `CysticAirwaves` LIMIT $start, $pgsize_wave"); 
        $waves_total = mysql_query("SELECT COUNT(1) FROM `CysticAirwaves`"); 
        $waves_total = mysql_fetch_row($waves_total); 
        $waves_total = $waves_total[0]; 
        $max_pages = $waves_total/$pgsize_wave; 
        $max_pages = ceil($waves_total/$pgsize_waves); 


        ?> 



        <div id="all_page_turn"> 
          <ul> 

           <?php if($waves_total > 40 && $pg_wave >= 40) { ?> 
           <li class="PreviousPageBlog round_10px"> 
            <a href="Airwave_build.php?id=<?php echo $pg_wave - 40); ?>">Previous Page</a> 
           </li> 
           <?php } ?> 

           <?php if($waves_total > 40 && $pg_wave < ($waves_total-40)) { ?> 
           <li class="NextPageBlog round_10px"> 
            <a href="Airwave_build.php?id=<?php echo ($pg_wave + 40); ?>">Next Page</a> 
           </li> 
           <?php } ?> 

          </ul> 
         </div> 

爲了澄清任何混淆,廣播電波是來自用戶的帖子,我想限制40每頁。如果這裏有幫助的是在同一頁上拉電波的查詢:

$query = "SELECT * FROM `CysticAirwaves` WHERE `FromUserID` = `ToUserID` AND `status` = 'active' ORDER BY `date` DESC, `time` DESC"; 
      $request = mysql_query($query,$connection); 
      $counter = 0; 
      while($result = mysql_fetch_array($request)) { 

      $replies_q = "SELECT COUNT(`id`) FROM `CysticAirwaves_replies` WHERE `AirwaveID` = '" . $result['id'] . "' && `status` = 'active'"; 
      $request2 = mysql_query($replies_q,$connection); 
      $replies = mysql_fetch_array($request2); 
      $replies_num = $replies['COUNT(`id`)']; 

      $counter++; 
      $waver = new User($result['FromUserID']); 

非常感謝。

+0

你應該解釋的問題是什麼? – krtek 2011-06-09 01:54:57

+0

@Krtek - 問題是我無法得到它的分頁 – LightningWrist 2011-06-09 18:03:08

+0

遷移到http:/ /codereview.stackexchange.com/? – Knu 2011-06-13 23:04:46

回答

2

這是僞代碼但希望解釋邏輯。

$total  = SELECT COUNT(*) FROM `waves` 
$currentPage = 1 // changes through page parameter in URL 
$wavesPerPage = 40 
$totalPages = ceil($total/$wavesPerPage) 
$offset  = ($wavesPerPage * ($currentPage - 1)) + 1 

$waves = mysql_query("SELECT * FROM `waves` LIMIT $offset, $wavesPerPage"); 

while ($row = mysql_fetch_assoc($waves)) { 
    echo $row['wave'] 
    … 
} 

要輸出分頁鏈接:

if ($totalPages > 1) { 
    if ($currentPage > 1) { 
     printf('<a href="waves.php?page=%u">Previous</a>', $currentPage - 1); 
    } 

    for ($i = 1; $i <= $totalPages; $i++) { 
     $class = ($i == $currentPage) ? 'selected' : null; 
     printf('<a href="waves.php?page=%1$u" class="%2$s">Page %1$u</a>', $i, $class); 
    } 

    if ($currentPage < $totalPages) { 
     printf('<a href="waves.php?page=%u">Next</a>', $currentPage + 1); 
    } 
} 
+0

我承諾的邏輯。問題出在代碼本身上。所以僞代碼對我沒有太大的好處。我不想讓你爲我做,也許只是糾正我所擁有的,或者指出我有什麼問題。 – LightningWrist 2011-06-09 22:19:30

+0

那麼究竟是什麼問題?很難通過這樣模糊的錯誤描述來給出具體的建議,也不能自己運行代碼(因爲我沒有數據庫)。對我來說,對於初學者來說,你的抵消計算是關閉的。我建議你拆掉你的腳本,實現上面的代碼來創建一個簡單的例子,並從那裏再次構建它。那,或者嘗試一步一步的調試。 – deceze 2011-06-09 22:34:11

+0

我覺得我非常接近。我通過你的建議開始了,但仍然沒有做到這一點。不僅限於40或分頁。頁面底部的下一個鏈接有大量的「Page $ i」鏈接。這是最新的代碼塊。再次感謝與我一起工作。我想標記這是正確的答案。 https://gist.github.com/9f92c5512ef324645342 – LightningWrist 2011-06-13 20:23:49