国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

PHP 分頁代碼與分頁原理解析

2024-05-04 23:06:45
字體:
來源:轉載
供稿:網友

本文章來給各位php入門者提供在php與mysql實現分頁代碼與原理,在mysql中支持limit 0,1這樣就是查詢0,1條記錄了,有了它在php中分頁就簡單快速多了。

所謂分頁顯示,也就是將數據庫中的結果集人為的分成一段一段的來顯示,這里需要兩個初始的參數:1,每頁多少條記錄($PageSize)2,當前是第幾頁($CurrentPageID).

現在只要再給我一個結果集,我就可以顯示某段特定的結果出來,至于其他的參數,比如:上一頁($PreviousPageID)、下一頁($NextPageID)、總頁數($numPages)等等,都可以根據前邊這幾個東西得到。

以MySQL數據庫為例,如果要從表內截取某段內容,sql語句可以用:select * from table limit offset, rows。看看下面一組sql語句,嘗試一下發現其中的規率,代碼如下:

  1. select * from table limit 0,10 // 前10條記錄 
  2. select * from table limit 10,10 // 第11至20條記錄 
  3. select * from table limit 20,10 // 第21至30條記錄 
  4. …… 

這一組sql語句其實就是當$PageSize=10的時候取表內每一頁數據的sql語句,我們可以總結出這樣一個模板,代碼如下:

select * from table limit ($CurrentPageID - 1) * $PageSize, $PageSize

拿這個模板代入對應的值和上邊那一組sql語句對照一下看看是不是那么回事,搞定了最重要的如何獲取數據的問題以后,剩下的就僅僅是傳遞參數,構造合適的sql語句然后使用php從數據庫內獲取數據并顯示了,以下我將用具體代碼加以說明.

  1. <html> 
  2. <head> 
  3. <title> 
  4. ShowData 
  5. </title> 
  6. </head> 
  7. <body> 
  8. <h2>ShowData</h2> 
  9. <?php 
  10.     //連接數據庫     
  11.     $page = 1; 
  12.         $db = mysql_connect('127.0.0.1','root','toor'); 
  13.         mysql_select_db('test',$db); 
  14.      
  15.         $pagesize = 3;    //每頁顯示到數量 
  16.      
  17.     //計算一共有多少記錄,用于計算頁數 
  18.     $rs = mysql_query("select count(*) from info",$db); 
  19.     $row = @mysql_fetch_array($rs); 
  20.     $numrows = $row[0]; 
  21.     //計算頁數 
  22.     $pages = intval($numrows / $pagesize); 
  23.     if ($numrows % $pagesize
  24.     { 
  25.         $pages++; 
  26.     } 
  27.     //設置頁數 
  28.     if (isset($_GET['page'])) 
  29.     {     
  30.         $page = intval($_GET['page']); 
  31.     } 
  32.     else 
  33.     { 
  34.         $page = 1;        //其他情況,都指向第一頁 
  35.     } 
  36.      
  37.     //計算記錄的偏移量 
  38.     $offset = $pagesize * ($page - 1); 
  39.     //讀取指定記錄 
  40.     $rs = mysql_query("select * from info order by id limit $offset,$pagesize",$db); 
  41.     //把數據用表格顯示出來 
  42.     if ($row = @mysql_fetch_array($rs)) 
  43.     { 
  44.         $i = 0; 
  45.         ?> 
  46.         <table border='0' width='80%'
  47.         <tr> 
  48.         <td width='50%'
  49.         <p align='center'>ID</td> 
  50.         <td width='50%'
  51.         <p align='center'>DOC</td> 
  52.         </tr> 
  53.         <?php 
  54.             do
  55.                 $i++; 
  56.         ?> 
  57.         <tr align='center'
  58.         <td width='50%'><?=$row['id']?></td> 
  59.         <td width='50%'><?=$row['doc']?></td> 
  60.         </tr> 
  61.         <?php 
  62.             } 
  63.             //循環顯示數據 
  64.             while ($row = mysql_fetch_array($rs)); 
  65.             echo "</table>"
  66.     } 
  67.     echo "<div align='center'> 共".$pages."頁(".$page."/".$pages.")"
  68.     for ($i = 1;$i < $page;$i++) 
  69.     { 
  70.         echo "<a href='showdata.php?page=".$i."'>[".$i."]</a>"
  71.     } 
  72.     echo "[".$page."]"
  73.     for ($i = $page + 1;$i <= $pages;$i++) 
  74.     { 
  75.         echo "<a href='showdata.php?page=".$i."'>[".$i."]</a>"
  76.     } 
  77.     echo "</div>"
  78.     ?> 
  79. </body> 
  80. </html> 

總結:分頁就根據用戶點擊連接,然后由于php獲取page值再經過一系列算法得出當前多少頁面,然后取多少要就顯示出你要查看的記錄了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临澧县| 壤塘县| 集贤县| 辽源市| 寻甸| 交城县| 岗巴县| 天气| 上杭县| 邵阳县| 尤溪县| 嵩明县| 商城县| 嘉善县| 房山区| 郁南县| 当涂县| 水城县| 嘉荫县| 新竹县| 阳朔县| 小金县| 大邑县| 贞丰县| 临西县| 临清市| 禹城市| 班玛县| 盈江县| 揭西县| 天全县| 荔浦县| 海丰县| 文成县| 饶阳县| 辉县市| 佛山市| 贵港市| 偃师市| 毕节市| 偃师市|