久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1379|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

PHP分頁

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:105323 發(fā)表于 2016-2-22 20:13 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
在看本文之前,請確保你已掌握了PHP的一些知識以及MYSQL的查詢操作基礎(chǔ)哦。
作為一個Web程序,經(jīng)常要和不計其數(shù)的數(shù)據(jù)打交道,比如會員的數(shù)據(jù),文章數(shù)據(jù),假如只有幾十個會員那很好辦,在一頁顯示就可以了,可是假如你的網(wǎng)站是幾千甚至幾十萬會員的話,如果都在一頁打開的話無論對瀏覽器還是觀看者都是一種折磨,而且如果數(shù)據(jù)上億,從數(shù)據(jù)庫里查詢一次的話,對服務(wù)器的壓力是很大的,這不是正確的方法。
相信每個學(xué)習(xí)PHP的新手都會對分頁這個東西感覺很頭疼,不過有了默默的這一水帖,你肯定會拍拍腦袋說,嘿,原來分頁竟然如此簡單?的確,現(xiàn)在請深呼吸一口新鮮的空氣,仔細(xì)的聽默默給你一點一點的分解。
假設(shè)我們要處理1000條數(shù)據(jù),要在每頁中顯示10條,這樣的話就會分100頁來顯示,咱們先看一看在mysql里提取10條信息是如何操作的。
Select * from table limit 0,10
上面是一句很簡單的mysql查詢語句,它的作用是從一個名叫table的表里提取10條數(shù)據(jù),并且把所有字段的值都獲得。其中的limit 0,10的用法是:limit 開始點,要提取的數(shù)目
關(guān)鍵的地方就在這段“l(fā)imit 0,10”,它其中的0是以0為起始點,后面的10則是顯示10條數(shù)據(jù),那么我們要以10為起始點,顯示到第20條數(shù)據(jù)該怎么寫呢?
可能很多大大會心直口快的說“l(fā)imit 10,20”嘛!啊哦,這樣可就錯誤了哦,正確的寫法是“l(fā)imit 10,10”它后面的參數(shù)并非是結(jié)束點而是要提取的數(shù)目 ,記住哦。
懂得了如何提取10條數(shù)據(jù),那么提取1000條也就是做100次這種查詢呀,就是說要做如下的查詢:
Limit 0,10                 //第一頁
Limit 10,10                //第二頁
Limit 20,10                //第三頁
Limit 30,10                //第四頁
……
看出有什么規(guī)律了嗎?沒錯,第一個參數(shù)每翻一頁就增加10,可是第二個參數(shù)是不變的。
也就是說咱們設(shè)法根據(jù)頁數(shù)來改變第一個參數(shù)的值 ,就可以進(jìn)行分頁顯示數(shù)據(jù)了,怎么樣,原理是不是很簡單?
可是要怎么設(shè)法根據(jù)頁數(shù)來改變第一個參數(shù)的值呢?首先,咱們要有一個頁數(shù)的值,用url的GET方式獲取。
比如index.php?page=18
相信大部分的大大對這個東西不陌生吧,這種url地址可是隨處可見,其中的page參數(shù)的作用就是傳入要顯示的頁數(shù)。
咱們通過一段代碼來看一看究竟是如何實現(xiàn)的吧:
[php]
<?php
/*
Author:默默
Date :2006-12-03
*/
$page=isset($_GET['page'])?intval($_GET['page']):1;        //這句就是獲取page=18中的page的值,假如不存在page,那么頁數(shù)就是1。
$num=10;         //每頁顯示10條數(shù)據(jù)
$db=mysql_connect("host","name","pass");           //創(chuàng)建數(shù)據(jù)庫連接
$select=mysql_select_db("db",$db);                 //選擇要操作的數(shù)據(jù)庫
/*
首先咱們要獲取數(shù)據(jù)庫中到底有多少數(shù)據(jù),才能判斷具體要分多少頁,總頁數(shù) 具體的公式就是
總數(shù)據(jù)數(shù) 除以 每頁顯示的條數(shù),有余進(jìn)一
也就是說10/3=3.3333=4 有余數(shù)就要進(jìn)一。
*/
$total=mysql_num_rows(mysql_query("select * from table")); //查詢數(shù)據(jù)的總數(shù)total
$pagenum=ceil($total/$num);      //獲得總頁數(shù) pagenum
//假如傳入的頁數(shù)參數(shù)apge 大于總頁數(shù) pagenum,則顯示錯誤信息
If($page>$pagenum || $page == 0){
       Echo "Error : Can Not Found The page .";
       Exit;
}
$offset=($page-1)*$num;         //獲取limit的第一個參數(shù)的值 offset ,假如第一頁則為(1-1)*10=0,第二頁為(2-1)*10=10。             (傳入的頁數(shù)-1) * 每頁的數(shù)據(jù) 得到limit第一個參數(shù)的值
$info=mysql_query("select * from table limit $offset,$num ");   //獲取相應(yīng)頁數(shù)所需要顯示的數(shù)據(jù)
While($it=mysql_fetch_array($info)){
       Echo $it['name']."<br />";
}                                                              //顯示數(shù)據(jù)

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

       $show=($i!=$page)?"<a href='index.php?page=".$i."'>$i</a>":"<b>$i</b>";
       Echo $show." ";
}
/*顯示分頁信息,假如是當(dāng)頁則顯示粗體的數(shù)字,其余的頁數(shù)則為超連接,假如當(dāng)前為第三頁則顯示如下
1 2 3 4 5 6
*/
?>
   [/php]
假如你仔細(xì)的讀過上面的代碼,把數(shù)據(jù)庫連接和查詢的表替換成你的,那么就能看見它的執(zhí)行效果哦。
是不是很簡單,只要動動腦筋,可以讓它顯示的更為個性化哦,給大家出一個小題,如何實現(xiàn)“首頁 上一頁 下一頁 尾頁”這種格式的分頁呢?
OK,水帖灌完,收工。^_^ 默默小談PHP&MYSQL分頁原理及實現(xiàn)
===================================
總結(jié):

原型:      Select * from table limit 0,10
程序:
select * from table limit $offset,$num ($offset取值是:傳入的頁面數(shù)-1     $num是每個頁面顯示的數(shù)據(jù),多為固定常量值)

總分頁數(shù):總數(shù)據(jù)% 每頁顯示的條數(shù)有余進(jìn)一
    int totalPage=((totalCount%NUM)==0)?totalCount/NUM:totalCount/NUM+1;

limit用法limit 開始點,要提取的數(shù)目

不過要注意的是:一定要加上order by ,確定以上升或者下降的順序來查詢,不然在查詢的時候會不知道從哪個方向開始查詢。不過一定要注意順序:正確的是select * from user order by id desc limit 0,10;


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日本视频一区二区 | av片毛片| 亚洲综合区 | 亚洲欧美一区二区三区在线 | 九九热在线视频观看这里只有精品 | 毛片一区二区三区 | 久草成人 | 麻豆亚洲 | 亚洲国产欧美日韩 | 免费视频一区二区 | 欧美高清性xxxxhd | 精品国产欧美在线 | 盗摄精品av一区二区三区 | 免费看黄视频网站 | av黄色免费 | 国产一区 在线视频 | 久草视频在线播放 | 黄色片视频| 午夜一区二区三区在线观看 | 精品国产欧美一区二区 | 中文字幕在线观看一区二区 | 久久久久一区 | 欧美黄色精品 | 麻豆一区二区三区 | 夜夜草| 国产精品美女久久久久久久久久久 | 国产在线一| 国产精品久久久久久久久久久久久 | 日韩视频在线一区 | 天堂资源最新在线 | 欧美一级免费 | 欧美午夜精品久久久久久浪潮 | 久久久久久国产免费视网址 | 性视频一区 | av大片 | 成年人网站免费视频 | 欧美日韩成人在线 | 欧美成人免费在线视频 | 欧美日韩国产一区 | 国产区视频在线观看 | 国产激情一区二区三区 |