2013-11-21 93 views
0

我有幾個網站用於處理分頁的代碼。我面臨的問題是,代碼只能提供'下一個'和'上一個'鏈接。對於我正在工作的網站,我也需要頁碼,而不是全部,一次可能5個,親戚像這樣 < 1 2 3 4 5> 然後當你到第5頁時 < 6 7 8 9 10 >PHP頁碼分頁

這是我的分頁代碼FARF

//paganation settings 
$pages_query = mysqli_query($link, "SELECT COUNT(`id`) FROM `products` WHERE subcat = 1 AND 
          status = 1") or die(mysqli_error($link)); 
$result = mysqli_fetch_array($pages_query, MYSQLI_NUM); 
$pages = $result[0]/$per_page; 
$page = (isset($_GET['page']) AND (int)$_GET['page'] > 0) ? (int)$_GET['page'] : 1; 
$start = ($page - 1) * $per_page; 
$last = ($pages - 1)/$per_page; 
$prev = $page - 1;              
$next = $page + 1; 
//query the db 
$q =mysqli_query($link, "SELECT * FROM products WHERE subcat = 1 AND status = 1 
      ORDER BY id DESC LIMIT $start, $per_page"); 
if(mysqli_num_rows($q) > 0){ 
//find out the page we are on and display next and previous links accordingly 
    if ($page >= 1){ 
     if ($page < $pages) { 
     echo "<span class='next'>"; 
      echo "<a href=\"?page={$next}\">Next</a> "; 
      echo "</span>"; 
     } 
     if ($page >=2){ 
     echo "<span class='prev'>"; 
     echo "<a href=\"?page={$prev}\">Back</a> "; 
     echo "</span>"; 
     } 
} 
else if ($page > $pages + 1){ 
    echo 'No more images in the database'; 
} 

誰能幫我在這裏添加頁碼

感謝

+1

爲了讓頁碼你需要獲得行的總數在表('COUNT(*)FROM products')和分裂之間的以每頁限制爲例, 200行/每頁20頁= 10頁。然後,您顯示每個頁碼的鏈接,這些頁碼具有'page num * limit'作爲'起始變量',例如第1頁(start = 20),第3頁(start = 60),第10頁(start = 200) –

+1

您可以使用'SELECT SQL_CALC_FOUND_ROWS ...'將您的查詢減少到一個查詢, count(id)'並找出有多少行將返回,如果它不是'LIMIT'子句。 –

+1

@MarcB'SQL_CALC_FOUND_ROWS'仍然需要第二次查詢才能返回'SELECT FOUND_ROWS()'結果,因此您無法將其歸結爲單個查詢。然而,當使用LIMITS /分頁以及過濾條件時,這是非常有用的,因爲這意味着您不必使用兩次過濾條件運行相同的查詢。即使如此,如果過濾條件在索引行上,「SQL_CALC_FOUND_ROWS」實際上可能會更糟糕。看到這篇文章:http://www.mysqlperformanceblog.com/2007/08/28/to-sql_calc_found_rows-or-not-to-sql_calc_found_rows/所以你需要測試你的情況,看看什麼是最好的 –

回答

0
for ($i=1; $i<=$total_pages; $i++) { 
     $pagLink .= "<a href='index.php?page=".$i."'>".$i."</a>"; 
}; 

這可能HEL你 把它如果下一個和上一頁環