佳麗斯 加厚雙人/單人秋冬被子暖冬 羊毛被芯羊毛柔絲被特價包郵 憂憂魚冬外穿打底褲女秋冬厚長褲女褲加絨加厚高腰彈力鉛筆褲靴褲 韓國代購2013新款 韓版秋冬休閑女時尚磨破口袋衛(wèi)衣韓版學生裝 潮

          有時,退一步,能一口氣進幾步,只是這先退一步需要勇氣和自信。

          用心愛你,努力工作。

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            70 隨筆 :: 1 文章 :: 33 評論 :: 0 Trackbacks
          在看本文之前,請確保你已掌握了PHP的一些知識以及MYSQL的查詢操作基礎哦。

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

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

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

          Select * from table limit 0,10

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

          關鍵的地方就在這段“limit 0,10”,它其中的0是以0為起始點,后面的10則是顯示10條數(shù)據(jù),那么我們要以10為起始點,顯示到第20條數(shù)據(jù)該怎么寫呢?

          可能很多大大會心直口快的說“limit 10,20”嘛!啊哦,這樣可就錯誤了哦,正確的寫法是“limit 10,10”它后面的參數(shù)并非是結束點而是要提取的數(shù)目,記住哦。

          懂得了如何提取10條數(shù)據(jù),那么提取1000條也就是做100次這種查詢呀,就是說要做如下的查詢:

          Limit 0,10                 //第一頁
          Limit 10,10                 //第二頁
          Limit 20,10                 //第三頁
          Limit 30,10                 //第四頁
          ……
          看出有什么規(guī)律了嗎?沒錯,第一個參數(shù)每翻一頁就增加10,可是第二個參數(shù)是不變的。
          也就是說咱們設法根據(jù)頁數(shù)來改變第一個參數(shù)的值,就可以進行分頁顯示數(shù)據(jù)了,怎么樣,原理是不是很簡單?

          可是要怎么設法根據(jù)頁數(shù)來改變第一個參數(shù)的值呢?首先,咱們要有一個頁數(shù)的值,用url的GET方式獲取。
          比如index.php?page=18
          相信大部分的大大對這個東西不陌生吧,這種url地址可是隨處可見,其中的page參數(shù)的作用就是傳入要顯示的頁數(shù)。

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

          <?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");   //獲取相應頁數(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
          /*
          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> ";

          //下拉跳轉列表,循環(huán)列出所有頁碼:
          $pagenav.=" 到第 <select name='topage' size='1' onchange='window.location=""$url?page=""+this.value'>"n";
          for(
          $i=1;$i<=$pagenum;$i++){
          if(
          $i==$page) $pagenav.="<option value='$i' selected>$i</option>"n";
          else
          $pagenav.="<option value='$i'>$i</option>"n";
          }
          $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");   //獲取相應頁數(shù)所需要顯示的數(shù)據(jù)
          While($it=mysql_fetch_array($info)){
                  Echo
          $it['username'];
                  echo
          "<br>";
          }                                                              
          //顯示數(shù)據(jù)
            
          echo"<br>";
             echo
          $pagenav;//輸出分頁導航
          ?>


          轉自 http://www.cnblogs.com/justforfun/archive/2009/04/27/1444358.html
          posted on 2009-10-21 10:08 王生生 閱讀(199) 評論(0)  編輯  收藏 所屬分類: PHP
          森露2013新款豹紋打底衫 高領 女 長袖 修身長袖t恤女 加絨加厚冬 2013春秋新款女裝 潮修身大碼長袖小西裝外套女 韓版中長款小西裝 憂憂魚2013秋冬新款直筒褲女顯瘦長褲加絨黑色休閑褲修身西褲女褲
          主站蜘蛛池模板: 榆树市| 岱山县| 九江县| 黑山县| 洱源县| 修水县| 闵行区| 息烽县| 阳泉市| 淮南市| 新津县| 兴山县| 通河县| 永清县| 故城县| 黑水县| 抚州市| 丹凤县| 长葛市| 定边县| 原平市| 永德县| 兴和县| 南康市| 长沙县| 宜川县| 肥东县| 建阳市| 信宜市| 噶尔县| 中西区| 吴忠市| 四子王旗| 厦门市| 景德镇市| 汉中市| 南岸区| 兴化市| 金秀| 南江县| 浦江县|