分頁在網站上面是一個必不可少的東西,例如在論壇上,只有幾十張帖子那很好辦,在一頁顯示就可以了,可是如果論壇有幾千甚至幾十萬帖子的話,如果都在一頁顯示的話無論對瀏覽器還是用戶都是一種折磨,而且如果數據上億,從數據庫里查詢一次的話,對服務器的壓力是很大的。 所以就有了分頁這個東西,接下來給大家講一下如何實現分頁。 假設我們有100條數據,要在每頁中顯示10條,這樣的話就會分10頁來顯示,我們先看一看在mysql里提取10條數據是如何操作的。 mysql_query('SELECT * FROM `article` LIMIT 0, 10'); 上面是一條很簡單的數據庫查詢語句,它的意思就是從名叫“article”的表里面提取10條數據,細心的朋友可能已經知道了,這條查詢語句最關鍵的就是limt 0, 10。 為了讓你們更容易理解,我用a和b替換掉0和10。 limit a, b 就是從第a條記錄開始,取出b條數據,a表示從哪里開始取出數據,b表示取多少條,也就是限定條件,限定他只能取多少條。假如一頁顯示10條數據,那么b就是10,一頁顯示20條數據,b就是20。 看幾個例子: Limit 0,10 //第一頁Limit 10,10 //第二頁Limit 20,10 //第三頁Limit 30,10 //第四頁 看出什么規律了嗎?沒錯,每翻一頁,第一個參數加10,而第二個參數一直不變。 可能有人就會問,為什么第一個參數會變,而第二個參數不變呢? 上面已經說過了,第一個參數表示從哪里開始,每翻一頁加10,這10條數據在上一頁已經顯示過了,所以就要加10從它的后面開始取出這一頁數據。第二個參數因為我們要每一頁都只顯示10條數據,所以第二個數值一直不變。 也就是說,只要我們改變第一個參數的值就可以實現分頁了,那我們要怎么改變呢?沒錯,用url的GET方式獲取頁數。 例如index.php?page=5 相信大家對這種url不陌生吧?可以說隨處可見,其中的page參數就是要顯示的頁數。 看一小段代碼: $page = $_GET['page'];// 接受url中的page參數if($page == ''){ $page = 1; //如果page不存在,那么頁數就是1;}$page_size = 10; //每頁顯示10條數據,也就是第二個參數 現在我們要獲取數據庫中到底有多少條數據,才能判斷要分多少頁, 具體的公式: 總數據條數 除以 每頁顯示的條數等于總頁數,也就是說100/10=10,還有一種情況有余數, 10/3=3.3333 有余數存在總頁數就要加1,所以總頁數為4。 計算頁數代碼: $total=mysql_num_rows(mysql_query('SELECT * FROM `article`')); //查詢總共有多少條數據$page_num=ceil($total/$page_size); //獲得總頁數 ( 總數據條數 除以 每頁顯示的條數 )$offset=($page-1)*$page_size; // 獲取limit第一個參數, (傳入的頁數-1) * 每頁顯示的條數//假如第一頁則為(1-1)*10=0,第二頁為(2-1)*10=10。$info=mysql_query('SELECT * FROM `article` limit $offset, $page_size'); //獲取相應頁數所需要顯示的數據 還有最后一步, 顯示分頁信息,如圖: http://www./Uploads/Files/201601/30c31453963130.jpg 代碼部分: if($page > 1){ echo '? 上頁 ';}for($i = 1; $i <= $page_num; $i++){ if($i == $page){ echo '' . $i . ' '; continue; } echo '' . $i . ' ';}if($page < $page_num){ echo '下頁 ? ';} 原文鏈接: ,尊重共享,歡迎轉載! |
|