5.3.3.3 PHP中數據分頁的實現
在Web開(kāi)發(fā)中經(jīng)常遇到的一個問題就是對(duì)大量數據進(jìn)行分頁顯示。如一個留言闆有數千條留言,如果這(zhè)些留言全都(dōu)顯示在一個頁面(miàn)上,頁面(miàn)將(jiāng)變得很大,有時過(guò)大的頁面(miàn)還(hái)會導緻浏覽器停止響應。PHP中提供了非常簡單方法對(duì)數據進(jìn)行分頁。
爲了更好(hǎo)的說明分頁的作用,先向(xiàng)testtable表中插入大量的數據。修改5-3.php,把控制插入條數的“for($i=1;$i<6;$i )”修改爲“for($i=1;$i<100;$i )”,執行此程序之後(hòu),數據庫中便會插入99條數據。這(zhè)時再運行5-4.php,會發(fā)現99條數據全部顯示在一頁内。
在5-4.php的基礎上,爲此程序增加分頁功能(néng),具體代碼如下:
1: <!--文件5-5.php:用PHP實現數據分頁-->
2: <HTML>
3: <HEAD>
4: <TITLE>用PHP實現數據分頁</TITLE>
5: </HEAD>
6: <BODY>
7: <?php
8: $id=mysql_connect("localhost","root","root");
9: mysql_select_db("newdata",$id);
10: $query="SELECT * FROM testtable";
11: $result=mysql_query($query,$id);
12: $datanum=mysql_num_rows($result);
13: $page_id=$_GET["page_id"];
14: if ($page_id==""){
15: $page_id=1;
16: }
17: $page_size="15"; //定義每頁顯示條數
18: $page_num=ceil($datanum/$page_size);
19: ?>
20: 表testtable中共有<?php echo $datanum;?>條數據<br>
21: 每頁<?php echo $page_size;?>條,共<?php echo $page_num;?>頁。<br>
22: <?php
23: for ($i=1;$i<=$page_num;$i ){
24: echo "[<a href=?page_id=".$i.">".$i."</a>]";
25: }
26: $start=($page_id-1)*$page_size;
27: $query2="SELECT * FROM testtable limit $start,$page_size";
28: $result2=mysql_query($query2,$id);
29: ?>
30: <table width="228" height="34" border="1">
31: <?php while ($info = mysql_fetch_array($result2, MySQL_ASSOC)) { ?>
32: <tr>
33: <td width="99" height="28"><?php echo $info["name"]?></td>
34: <td width="113"> <?php echo $info["age"]?></td>
35: </tr>
36: <?php }?>
37: </table>
38: <?php mysql_close($id);?>
39: </BODY>
40: </HTML>
程序運行結果如圖5-10所示。
圖5-10 程序5-5.php的運行結果
1.先把數據庫裡(lǐ)所有的數據分頁顯示在頁面(miàn),并在顯示數據的表格上方加上查詢表單。 2.加上條件,實現目标結果。
【查詢後(hòu)也可分頁】可以在sql語句中加入模糊查詢條件,搜索後(hòu)將(jiāng)記錄進(jìn)行輸出,就可以對(duì)查詢後(hòu)的記錄進(jìn)行分頁。
通過(guò)sql語句對(duì)數據庫中的數據進(jìn)行操作,完成(chéng)對(duì)數據的分頁,讓多條數據可以分頁列出來。
<!--文件5-5.php:用PHP實現數據分頁--> 2: <HTML> 3: <HEAD> 4: <TITLE>用PHP實現數據分頁</TITLE> 5: </HEAD> 6: <BODY> 7: <?php 8: $id=mysql_connect("localhost","root","root"); 9: mysql_select_db("newdata",$id); 10: $query="SELECT * FROM testtable"; 11: $result=mysql_query($query,$id); 12: $datanum=mysql_num_rows($result); 13: $page_id=$_GET["page_id"]; 14: if ($page_id==""){ 15: $page_id=1; 16: } 17: $page_size="15"; //定義每頁顯示條數 18: $page_num=ceil($datanum/$page_size); 19: ?> 20: 表testtable中共有<?php echo $datanum;?>條數據<br> 21: 每頁<?php echo $page_size;?>條,共<?php echo $page_num;?>頁。<br> 22: <?php 23: for ($i=1;$i<=$page_num;$i ){ 24: echo "[<a href=?page_id=".$i.">".$i."</a>]"; 25: } 26: $start=($page_id-1)*$page_size; 27: $query2="SELECT * FROM testtable limit $start,$page_size"; 28: $result2=mysql_query($query2,$id); 29: ?> 30: <table width="228" height="34" border="1"> 31: <?php while ($info = mysql_fetch_array($result2, MySQL_ASSOC)) { ?> 32: <tr> 33: <td width="99" height="28"><?php echo $info["name"]?></td> 34: <td width="113"> <?php echo $info["age"]?></td> 35: </tr> 36: <?php }?> 37: </table> 38: <?php mysql_close($id);?> 39: </BODY> 40: </HTML> 這(zhè)串代碼很實用,真的是實現了分頁
終于學(xué)會分頁了