欧美日韩不卡一区二区三区,www.蜜臀.com,高清国产一区二区三区四区五区,欧美日韩三级视频,欧美性综合,精品国产91久久久久久,99a精品视频在线观看

php語(yǔ)言

PHP簡(jiǎn)單的分頁(yè)過(guò)程與原理

時(shí)間:2025-03-30 01:26:20 php語(yǔ)言 我要投稿
  • 相關(guān)推薦

PHP簡(jiǎn)單的分頁(yè)過(guò)程與原理

  作為一個(gè)Web程序,經(jīng)常要和不計(jì)其數(shù)的數(shù)據(jù)打交道,比如會(huì)員的數(shù)據(jù),文章數(shù)據(jù),假如只有幾十個(gè)會(huì)員那很好辦,在一頁(yè)顯示就可以了,可是假如你的網(wǎng)站是幾千甚至幾十萬(wàn)會(huì)員的話,如果都在一頁(yè)打開(kāi)的話無(wú)論對(duì)瀏覽器還是觀看者都是一種折磨,而且如果數(shù)據(jù)上億,從數(shù)據(jù)庫(kù)里查詢一次的話,對(duì)服務(wù)器的壓力是很大的,這不是正確的方法。下面是小編為大家搜集整理出來(lái)的有關(guān)于PHP簡(jiǎn)單的分頁(yè)過(guò)程與原理,希望可以幫助到大家!

  相信每個(gè)學(xué)習(xí)PHP的新手都會(huì)對(duì)分頁(yè)這個(gè)東西感覺(jué)很頭疼,不過(guò)有了默默的這一水帖,你肯定會(huì)拍拍腦袋說(shuō),嘿,原來(lái)分頁(yè)竟然如此簡(jiǎn)單?的確,現(xiàn)在請(qǐng)深呼吸一口新鮮的空氣,仔細(xì)的聽(tīng)默默給你一點(diǎn)一點(diǎn)的分解。

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

  Select * from table limit 0,10

  上面是一句很簡(jiǎn)單的mysql查詢語(yǔ)句,它的作用是從一個(gè)名叫table的表里提取10條數(shù)據(jù),并且把所有字段的值都獲得。其中的limit 0,10的用法是:limit 開(kāi)始點(diǎn),要提取的數(shù)目

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

  可能很多大大會(huì)心直口快的說(shuō)“l(fā)imit 10,20”嘛!啊哦,這樣可就錯(cuò)誤了哦,正確的寫(xiě)法是“l(fā)imit 10,10”它后面的參數(shù)并非是結(jié)束點(diǎn)而是要提取的數(shù)目 ,記住哦。

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

  Limit 0,10     //第一頁(yè)

  Limit 10,10    //第二頁(yè)

  Limit 20,10    //第三頁(yè)

  Limit 30,10    //第四頁(yè)

  ……

  看出有什么規(guī)律了嗎?沒(méi)錯(cuò),第一個(gè)參數(shù)每翻一頁(yè)就增加10,可是第二個(gè)參數(shù)是不變的。

  也就是說(shuō)咱們?cè)O(shè)法根據(jù)頁(yè)數(shù)來(lái)改變第一個(gè)參數(shù)的值 ,就可以進(jìn)行分頁(yè)顯示數(shù)據(jù)了,怎么樣,原理是不是很簡(jiǎn)單?

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

  比如index.php?page=18

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

  咱們通過(guò)一段代碼來(lái)看一看究竟是如何實(shí)現(xiàn)的吧:

  [php]

  <?php

  /*

  Author:默默

  Date :2006-12-03

  */

  $page=isset($_GET['page'])?intval($_GET['page']):1;  //這句就是獲取page=18中的page的值,假如不存在page,那么頁(yè)數(shù)就是1。

  $num=10;   //每頁(yè)顯示10條數(shù)據(jù)

  $db=mysql_connect("host","name","pass");   //創(chuàng)建數(shù)據(jù)庫(kù)連接

  $select=mysql_select_db("db",$db);     //選擇要操作的數(shù)據(jù)庫(kù)

  /*

  首先咱們要獲取數(shù)據(jù)庫(kù)中到底有多少數(shù)據(jù),才能判斷具體要分多少頁(yè),總頁(yè)數(shù) 具體的公式就是

  總數(shù)據(jù)數(shù) 除以 每頁(yè)顯示的條數(shù),有余進(jìn)一 。

  也就是說(shuō)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);  //獲得總頁(yè)數(shù) pagenum

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

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

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

  Exit;

  }

  $offset=($page-1)*$num;   //獲取limit的第一個(gè)參數(shù)的值 offset ,假如第一頁(yè)則為(1-1)*10=0,第二頁(yè)為(2-1)*10=10。    (傳入的頁(yè)數(shù)-1) * 每頁(yè)的數(shù)據(jù) 得到limit第一個(gè)參數(shù)的值

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

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

  Echo $it['name']."

  ";

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

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

  $show=($i!=$page)?"$i":"$i";

  Echo $show." ";

  }

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

  1 2 3 4 5 6

  */

  ?>

  [/php]

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

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

  OK,水帖灌完,收工。^_^ 默默小談PHP&MYSQL分頁(yè)原理及實(shí)現(xiàn)

 。剑剑剑剑剑剑剑剑剑剑剑剑剑剑剑剑剑剑剑剑剑剑剑剑剑剑剑剑剑剑剑剑剑剑

  總結(jié):

  原型:  Select * from table limit 0,10

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

  總分頁(yè)數(shù):總數(shù)據(jù)% 每頁(yè)顯示的條數(shù) ,有余進(jìn)一

  int totalPage=((totalCount%NUM)==0)?totalCount/NUM:totalCount/NUM+1;

  limit用法 :limit 開(kāi)始點(diǎn),要提取的數(shù)目

  不過(guò)要注意的是:一定要加上order by ,確定以上升或者下降的順序來(lái)查詢,不然在查詢的時(shí)候會(huì)不知道從哪個(gè)方向開(kāi)始查詢。不過(guò)一定要注意順序:正確的是select * from user order by id desc limit 0,10;

【PHP簡(jiǎn)單的分頁(yè)過(guò)程與原理】相關(guān)文章:

php分頁(yè)類代碼09-08

學(xué)習(xí)php分頁(yè)代碼實(shí)例10-11

PHP分頁(yè)自定義函數(shù)09-08

Bootstrap的php制作動(dòng)態(tài)分頁(yè)標(biāo)簽10-26

一個(gè)PHP+MSSQL分頁(yè)的例子09-23

一段經(jīng)典php mysql分頁(yè)程序代碼08-11

php+ajax實(shí)現(xiàn)無(wú)刷新數(shù)據(jù)分頁(yè)例子07-31

PHP Socket編程過(guò)程07-19

PHP底層的運(yùn)行機(jī)制與原理06-20