5.3.3.3 PHP中数据分页的实现
在Web开发中经常遇到的一个问题就是对大量数据进行分页显示。如一个留言板有数千条留言,如果这些留言全都显示在一个页面上,页面将变得很大,有时过大的页面还会导致浏览器停止响应。PHP中提供了非常简单方法对数据进行分页。
为了更好的说明分页的作用,先向testtable表中插入大量的数据。修改5-3.php,把控制插入条数的“for($i=1;$i<6;$i )”修改为“for($i=1;$i<100;$i )”,执行此程序之后,数据库中便会插入99条数据。这时再运行5-4.php,会发现99条数据全部显示在一页内。
在5-4.php的基础上,为此程序增加分页功能,具体代码如下:
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.先把数据库里所有的数据分页显示在页面,并在显示数据的表格上方加上查询表单。 2.加上条件,实现目标结果。
【查询后也可分页】可以在sql语句中加入模糊查询条件,搜索后将记录进行输出,就可以对查询后的记录进行分页。
通过sql语句对数据库中的数据进行操作,完成对数据的分页,让多条数据可以分页列出来。
<!--文件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> 这串代码很实用,真的是实现了分页
终于学会分页了