天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

php 分頁原理詳解

在看本文之前,請確保你已掌握了php的一些知識以及MYSQL的查詢操作基礎哦。

作為一個Web程序,經常要和不計其數的數據打交道,比如會員的數據,文章數據,假如只有幾十個會員那很好辦,在一頁顯示就可以了,可是假如你的網站是幾千甚至幾十萬會員的話,如果都在一頁打開的話無論對瀏覽器還是觀看者都是一種折磨,而且如果數據上億,從數據庫里查詢一次的話,對服務器的壓力是很大的,這不是正確的方法。

相信每個學習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方式獲取。
比如index.php?page=18
相信大部分的大大對這個東西不陌生吧,這種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']."<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
*/
?>
   [/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技術php 分頁原理詳解,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 全彩黄漫火影忍者纲手无遮挡 | 色狼亚洲色图 | 羞羞影院午夜男女爽爽免费 | 永久免费在线视频 | 一本色道久久88加勒比—综合 | 亚洲欧美中文字幕网站大全 | 在线播放成人无码日 | 精品久久久噜噜噜久久久app | 美女岔开腿露出粉嫩花苞 | 2019欧洲hd | 精品人妻一区二区三区视频53 | 性色欲情网站IWWW | 24小时日本在线 | 99精品免费久久久久久久久蜜桃 | 無码一区中文字幕少妇熟女H | 色琪琪丁香婷婷综合久久 | 亚洲免费久久 | 美女被男人撕衣舔胸 | 亚洲qingse中文字幕久久 | 久久精品视在线-2 | 岛国在线无码免费观 | 日韩欧美中文字幕在线 | 亚洲黄色三级视频 | 久久re视频这里精品青 | av视频在线免播放观看 | 久久国产视频网 | 亚洲国产日韩欧美视频二区 | 99视频全部看免费观 | 伦理电影v男人天堂 | 纯肉小黄文高H | 男人边吃奶边挵进去呻吟漫画 | 少妇精品久久久一区二区三区 | 中国老头oldday tv | 精选国产AV精选一区二区三区 | 久久综合一个色综合网 | 亚洲嫩草影院久久精品 | 国产在线观看www鲁啊鲁免费 | 亚洲精品久久午夜麻豆 | 欧美性狂猛AAAAAA | 在线观看国产高清免费不卡 | 自拍区偷拍亚洲视频 |