php 分頁原理入門教程

有關php分頁原理的入門教程。

假設要處理1000條數據,要在每頁中顯示10條,這樣的話就會分100頁來顯示,咱們先看一看在mysql裏提取10條信息是如何操作的。

select * from table limit 0,10

上面是一句很簡單的mysql查詢語句,它的作用是從一個名叫table的表裏提取10條數據,並且把所有字段的值都獲得。其中的limit 0,10的用法是:limit 開始點,要提取的數目

專題推薦:php分頁代碼大全

關鍵的地方就在這段“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方式獲取。

比如index.php?page=18

這種url地址可是隨處可見,其中的page參數的作用就是傳入要顯示的頁數。

<?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']."<br />";

}  //顯示數據

 

for($i=1;$i<=$pagenum;$i++){

 $show=($i!=$page)?"<a href='index.php?page=".$i."'>$i</a>":"<b>$i</b>";

 echo $show." ";

}

/*顯示分頁信息,假如是當頁則顯示粗體的數字,其餘的頁數則爲超連接,假如當前爲第三頁則顯示如下

1 2 3 4 5 6

*/

?>

假如你仔細的讀過上面的代碼,把數據庫連接和查詢的表替換成你的,那麼就能看見它的執行效果哦。

是不是很簡單,只要動動腦筋,可以讓它顯示的更爲個性化哦,給大家出一個小題,如何實現“首頁 上一頁 下一頁 尾頁”這種格式的分頁呢?

 

總結:

原型: 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;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章