<output id="r87xx"></output>
    1. 
      
      <mark id="r87xx"><thead id="r87xx"><input id="r87xx"></input></thead></mark>
        •   

               當前位置:首頁>軟件介紹>PHP+MySQL分頁原理及實現(xiàn) 查詢:
               
          PHP+MySQL分頁原理及實現(xiàn)

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

                  作為一個Web程序,經(jīng)常要和不計其數(shù)的數(shù)據(jù)打交道,比如會員的數(shù)據(jù),文章數(shù)據(jù),假如只有幾十個會員那很好辦,在一頁顯示就可以了,可是假如你的網(wǎng)站是幾千甚至幾十萬會員的話,如果都在一頁打開的話無論對瀏覽器還是觀看者都是一種折磨。

                  相信每個學習PHP的新手都會對分頁這個東西感覺很頭疼,不過有了默默的這一水帖,你肯定會拍拍腦袋說,嘿,原來分頁竟然如此簡單?的確,現(xiàn)在請深呼吸一口新鮮的空氣,仔細的聽默默給你一點一點的分解。

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

                  Select * from table limit 0,10

                  上面是一句很簡單的mysql查詢語句,它的作用是從一個名叫table的表里提取10條數(shù)據(jù),并且把所有字段的值都獲得。

                  關(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ù)的值,就可以進行分頁顯示數(shù)據(jù)了,怎么樣,

                  原理是不是很簡單?

                  可是要怎么設(shè)法根據(jù)頁數(shù)來改變第一個參數(shù)的值呢?首先,咱們要有一個頁數(shù)的值,用url的GET方式獲取。

                  比如index.php?page=18

                  相信大部分的大大對這個東西不陌生吧,這種url地址可是隨處可見,其中的page參數(shù)的作用就是傳入要顯示的頁數(shù)。

                  咱們通過一段代碼來看一看究竟是如何實現(xiàn)的吧:

                  復制PHP內(nèi)容到剪貼板

                  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ù)據(jù)數(shù)除以每頁顯示的條數(shù),有余進一。

                  也就是說10/3=3.3333=4 有余數(shù)就要進一。

                  */

                  $total=mysql_num_rows(mysql_query("select id from table")); //查詢數(shù)據(jù)的總數(shù),id是數(shù)據(jù)庫中的一個自動賦值的字段

                  $pagenum=ceil($total/$num); //獲得總頁數(shù)

                  //假如傳入的頁數(shù)參數(shù)大于總頁數(shù),則顯示錯誤信息

                  If($page>$pagenum || $page == 0){

                  Echo "Error : Can Not Found The page .";

                  Exit;

                  }

                  $offset=($page-1)*$num; //獲取limit的第一個參數(shù)的值,假如第一頁則為(1-1)*10=0,第二頁為(2-1)*10=10。

                  $info=mysql_query("select name from table limit $offset,$num"); //獲取相應(yīng)頁數(shù)所需要顯示的數(shù)據(jù),name是數(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." ";

                  }

                  /*顯示分頁信息,假如是當頁則顯示粗體的數(shù)字,其余的頁數(shù)則為超連接,假如當前為第三

                  頁則顯示如下

                  1 2 3 4 5 6

                  */

                  ?>

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

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

                  OK,水帖灌完,收工。^_^

                  好帖子啊,我來頂默默的提問,代碼,如下:

                  復制PHP內(nèi)容到剪貼板

                  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("localhost","root","7529639"); //創(chuàng)建數(shù)據(jù)庫連接 mysql_select_db("cr_download"); //選擇要操作的數(shù)據(jù)庫

                  /*

                  首先咱們要獲取數(shù)據(jù)庫中到底有多少數(shù)據(jù),才能判斷具體要分多少頁,具體的公式就是 總數(shù)據(jù)庫除以每頁顯示的條數(shù),有余進一。

                  也就是說10/3=3.3333=4 有余數(shù)就要進一。

                  */

                  $result=mysql_query("select * from cr_userinfo");

                  $total=mysql_num_rows($result); //查詢所有的數(shù)據(jù)

                  $url='test.php';//獲取本頁URL

                  //頁碼計算

                  $pagenum=ceil($total/$num); //獲得總頁數(shù),也是最后一頁

                  $page=min($pagenum,$page);//獲得首頁

                  $prepg=$page-1;//上一頁

                  $nextpg=($page==$pagenum ? 0 : $page+1);//下一頁

                  $offset=($page-1)*$num; //獲取limit的第一個參數(shù)的值,假如第一頁則為(1-1)*10=0,第二頁為(2-1)*10=10。

                  //開始分頁導航條代碼:

                  $pagenav="顯示第 <B>".($total?($offset+1):0)."</B>-<B>".min($offset+10,$total)."</B> 條記錄,共 $total 條記錄 ";

                  //如果只有一頁則跳出函數(shù):

                  if($pagenum<=1) return false;

                  $pagenav.=" <a href='$url?page=1'>首頁</a> ";

                  if($prepg) $pagenav.=" <a href='$url?page=$prepg'>前頁</a> "; else $pagenav.=" 前頁 ";

                  if($nextpg) $pagenav.=" <a href='$url?page=$nextpg'>后頁</a> "; else $pagenav.=" 后頁 ";

                  $pagenav.=" <a href='$url?page=$pagenum'>尾頁</a> ";

                  //下拉跳轉(zhuǎn)列表,循環(huán)列出所有頁碼:

                  $pagenav.=" 到第 <select name='topage' size='1'

                  onchange='window.location="$url?page="+this.value'> ";

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

                  if($i==$page) $pagenav.="<option value='$i' selected>$i</option> ";

                  else $pagenav.="<option value='$i'>$i</option> ";

                  }

                  $pagenav.="</select> 頁,共 $pagenum 頁";

                  //假如傳入的頁數(shù)參數(shù)大于總頁數(shù),則顯示錯誤信息

                  If($page>$pagenum){

                  Echo "Error : Can Not Found The page ".$page;

                  Exit;

                  }

                  $info=mysql_query("select * from cr_userinfo limit $offset,$num"); //獲取相應(yīng)頁數(shù)所需要顯示的數(shù)據(jù)

                  While($it=mysql_fetch_array($info)){

                  Echo $it['username'];

                  echo "<br>";

                  } //顯示數(shù)據(jù)

                  echo"<br>";

                  echo $pagenav;//輸出分頁導航

                  ?>

                  順便再深入下,在實際應(yīng)用中,幾乎涉及列表的就要用到分頁,大家可以試試做一個分頁通用函數(shù),這樣只要需要分頁的地方就調(diào)用這個函數(shù) 

                  


          頁面顯示PHP源碼系統(tǒng)管理員必須知道的PHP安全實踐
          五種常見的PHP設(shè)計模式微信公眾平臺開發(fā)方案書
          通過PHP操作SQLServer數(shù)據(jù)庫使用 eAccelerator加速PHP代碼的目的
          如何配置php服務(wù)器-iis7.5配置php環(huán)境網(wǎng)站搭建配置Editplus調(diào)試PHP程序入門教程
          PHP對數(shù)組的處理將PHP作為Shell腳本語言使用
          關(guān)于php測試部署和持續(xù)集成不常見卻非常有用的PHP函數(shù)
          安全配置PHP的25個實踐事例php總結(jié)報告
          PHP+PDO+學習筆記PHP開發(fā)中常見的錯誤
          信息發(fā)布:廣州名易軟件有限公司 http://www.jetlc.com
          • 勁爆價:
            不限功能
            不限用戶
            1998元/年

          • 微信客服

            <output id="r87xx"></output>
          1. 
            
            <mark id="r87xx"><thead id="r87xx"><input id="r87xx"></input></thead></mark>
              • 天天综合一 | 国产一级操逼视频免费播放 | 五月亚洲色 | 久久黄色视屏 | 91无码人妻一区二区成人AⅤ | 欧美大片久久久 | 免费看一级黄色电影 | 熟女午夜 | 视频一区中文字幕 | 亚洲高清视频在线播放 |