PHP簡單的分頁過程與原理
作為一個Web程序,經常要和不計其數的數據打交道,比如會員的數據,文章數據,假如只有幾十個會員那很好辦,在一頁顯示就可以了,可是假如你的網站是幾千甚至幾十萬會員的話,如果都在一頁打開的話無論對瀏覽器還是觀看者都是一種折磨,而且如果數據上億,從數據庫裏查詢一次的話,對服務器的壓力是很大的,這不是正確的方法。下面是小編為大家蒐集整理出來的有關於PHP簡單的分頁過程與原理,希望可以幫助到大家!
相信每個學習PHP的新手都會對分頁這個東西感覺很頭疼,不過有了默默的這一水帖,你肯定會拍拍腦袋説,嘿,原來分頁竟然如此簡單?的確,現在請深呼吸一口新鮮的空氣,仔細的聽默默給你一點一點的分解。
假設我們要處理1000條數據,要在每頁中顯示10條,這樣的話就會分100頁來顯示,咱們先看一看在mysql裏提取10條信息是如何操作的。
Select * from table limit 0,10
上面是一句很簡單的mysql查詢語句,它的作用是從一個名叫table的表裏提取10條數據,並且把所有字段的值都獲得。其中的limit 0,10的用法是:limit 開始點,要提取的數目
關鍵的地方就在這段“limit 0,10”,它其中的0是以0為起始點,後面的10則是顯示10條數據,那麼我們要以10為起始點,顯示到第20條數據該怎麼寫呢?
可能很多大大會心直口快的.説“limit 10,20”嘛!啊哦,這樣可就錯誤了哦,正確的寫法是“limit 10,10”它後面的參數並非是結束點而是要提取的數目 ,記住哦。
懂得了如何提取10條數據,那麼提取1000條也就是做100次這種查詢呀,就是説要做如下的查詢:
Limit 0,10 //第一頁
Limit 10,10 //第二頁
Limit 20,10 //第三頁
Limit 30,10 //第四頁
……
看出有什麼規律了嗎?沒錯,第一個參數每翻一頁就增加10,可是第二個參數是不變的。
也就是説咱們設法根據頁數來改變第一個參數的值 ,就可以進行分頁顯示數據了,怎麼樣,原理是不是很簡單?
可是要怎麼設法根據頁數來改變第一個參數的值呢?首先,咱們要有一個頁數的值,用url的GET方式獲取。
比如
相信大部分的大大對這個東西不陌生吧,這種url地址可是隨處可見,其中的page參數的作用就是傳入要顯示的頁數。
咱們通過一段代碼來看一看究竟是如何實現的吧:
[php]
<?php
/*
Author:默默
Date :2006-12-03
*/
$page=isset($_GET['page'])?intval($_GET['page']):1; //這句就是獲取page=18中的page的值,假如不存在page,那麼頁數就是1。
$num=10; //每頁顯示10條數據
$db=mysql_connect("host","name","pass"); //創建數據庫連接
$select=mysql_select_db("db",$db); //選擇要操作的數據庫
/*
首先咱們要獲取數據庫中到底有多少數據,才能判斷具體要分多少頁,總頁數 具體的公式就是
總數據數 除以 每頁顯示的條數,有餘進一 。
也就是説10/3=3.3333=4 有餘數就要進一。
*/
$total=mysql_num_rows(mysql_query("select * from table")); //查詢數據的總數total
$pagenum=ceil($total/$num); //獲得總頁數 pagenum
//假如傳入的頁數參數apge 大於總頁數 pagenum,則顯示錯誤信息
If($page>$pagenum || $page == 0){
Echo "Error : Can Not Found The page .";
Exit;
}
$offset=($page-1)*$num; //獲取limit的第一個參數的值 offset ,假如第一頁則為(1-1)*10=0,第二頁為(2-1)*10=10。 (傳入的頁數-1) * 每頁的數據 得到limit第一個參數的值
$info=mysql_query("select * from table limit $offset,$num "); //獲取相應頁數所需要顯示的數據
While($it=mysql_fetch_array($info)){
Echo $it['name']."
";
} //顯示數據
For($i=1;$i<=$pagenum;$i++){
$show=($i!=$page)?"$i":"$i";
Echo $show." ";
}
/*顯示分頁信息,假如是當頁則顯示粗體的數字,其餘的頁數則為超連接,假如當前為第三頁則顯示如下
1 2 3 4 5 6
*/
?>
[/php]
假如你仔細的讀過上面的代碼,把數據庫連接和查詢的表替換成你的,那麼就能看見它的執行效果哦。
是不是很簡單,只要動動腦筋,可以讓它顯示的更為個性化哦,給大家出一個小題,如何實現“首頁 上一頁 下一頁 尾頁”這種格式的分頁呢?
OK,水帖灌完,收工。^_^ 默默小談PHP&MYSQL分頁原理及實現
===================================
總結:
原型: Select * from table limit 0,10
程序: select * from table limit $offset,$num ($offset取值是:傳入的頁面數-1 $num是每個頁面顯示的數據,多為固定常量值)
總分頁數:總數據% 每頁顯示的條數 ,有餘進一
int totalPage=((totalCount%NUM)==0)?totalCount/NUM:totalCount/NUM+1;
limit用法 :limit 開始點,要提取的數目
不過要注意的是:一定要加上order by ,確定以上升或者下降的順序來查詢,不然在查詢的時候會不知道從哪個方向開始查詢。不過一定要注意順序:正確的是select * from user order by id desc limit 0,10;
-
PHP編程中10個最常見的錯誤
在生活中,好多人疑惑PHP語言難不難呢?那麼,小編來解答PHP編程中10個最常見的錯誤,歡迎來閲讀!錯誤1:foreach循環後留下懸掛指針在foreach循環中,如果我們需要更改迭代的元素或是為了提高效率,運用引用是一個好辦法:$arr=array(1,2,3,4);foreach($arras&$value){$val...
-
作為程序員必知的16個最佳PHP庫
PHP是一種功能強大的web站點腳本語言,通過PHP,web網站開發者可以更容易地創建動態的引人入勝的web頁面。開發人員可以使用PHP代碼與一些網站模板和框架來提升功能和特性。然而,編寫PHP代碼是一個繁瑣又耗時的過程。為了縮短開發時間,開發人員可以用PHP庫替代編寫代...
-
解決PHPutf-8編碼問題的方法
PHPutf-8編碼問題,着是困惑很多人的問題,如果處理不好,都是亂碼,下面是解決PHPutf-8編碼問題的方法,一起來學習下吧:1.在建數據庫的時候,尤其是用phpMyAdmin與MYSQL打交道時候,一般都是utf-8,字段為utf8_general_ci數據庫的設置:在文件中查找:[mysql]default-character-s...
-
提高PHP執行效率的50個技巧
PHP是一種HTML內嵌式的語言,是一種在服務器端執行的嵌入HTML文檔的腳本語言,下面是小編為大家整理的提高PHP執行效率的50個技巧,歡迎參考~1、用單引號代替雙引號來包含字符串,這樣做會更快一些。因為PHP會在雙引號包圍的字符串中搜尋變量,單引號則不會,注意:只有echo...