2013-12-08 51 views
0

我有這個非常小的表,我需要運行顯示一些關於註冊用戶(名稱,用戶名)的數據。高效的尋呼查詢方式PHP

$query = mysql_query("SELECT * FROM users ORDER BY Username ASC") or die(mysql_error()); 
         while($user = mysql_fetch_assoc($query)) 
         { 
          echo '<tr><td>' . $user['Username'] . '</td>'; 
          echo '<td>' . $user['FullName'] . '</td>'; 
          echo "<td><a href=\"deleteUser.php?id=" . $user['ID'] . "\">Delete</a><br /><a href=\"editUser.php?id=". $user['ID'] . "\">Edit</a></td></tr>"; 

         } 

無論如何,比方說,我將有50多個用戶,所有頁面將充斥着用戶。

所以我想到了一個解決方案,對於從數據庫中拉出來的每15行,他們將擁有自己的「頁面」(使用$ _GET)。 我的一位朋友告訴我,這是一種叫做分頁或分頁的東西,我不記得。我確實在網上找到了一些解決方案,但沒有人幫助我,有些看起來很長,我只是尋找另一個教程。

有沒有一種有效的方式來做到這一點,而不會陷入這麼多的東西呢?

+2

是的,它被稱爲'pagination'。 –

+0

那麼我該如何分頁(說這個的正確方法?)我的querys? – zarko

回答

1

這就是所謂的分頁:你可以在MySQL中用LIMIT語句來使用它。

$page = (int) $_GET['page']; 
$limit = 15; 
$offset = $page * $limit; 

$query = mysql_query("SELECT * FROM users ORDER BY Username ASC LIMIT $offset,$limit"); 

還需要使用相同的查詢無極限計算的總頁數:

$query = mysql_query("SELECT count(1) AS total FROM users"); 
$total = mysql_fetch_assoc($query)['total']; 

然後你就可以計算出你多少個頁面:

$pages = range(0, ceil($total/$limit)); 
foreach($pages as $p) 
    echo '<a href="?page=' . $p . '">' . $p . '</a>'; 

顯然你應該根據自己的需要調整這些代碼。

+0

它的工作完美,現在做出下一個和前一個按鈕,我只需要: $ next = $ _GET ['page'] + 1; echo'Next' – zarko

+0

是的,我還爲每個可用頁面添加了更完整的示例。 – Keeper

+0

非常感謝你:) – zarko