经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » PHP » 查看文章
php实现分页功能的详细实例方法
来源:jb51  时间:2019/9/30 8:49:41  对本文有异议

分页效果在网页中是常见的,可是怎样才能实现分页呢,今天做了两种方法来实现一下分页的效果。

首先,我们需要准备在数据库里面准备一个表,并且插入数据,这些都是必需的前提工作了,不多说,如图所示(库名为jereh,表名为n_content):

步骤分析:

我们需要分页的话,需要用到 "select * from tableName limit num1,num2”;这是一个限定查询的语句,后面跟两个参数,num1为从第几个开始查找,num2为查找的信息的个数,如我想查找2,3,4这三条数据,如下图所示:

好了,我们开始说步骤:

1、建立一个函数,用来实现限制查询的功能

首先我们来想一下,实现这个功能我们首先要知道当前的页数和要限制的一个页面显示几条信息,这个可以用形参传过来。那么,

我们设置pageNum为页数,pageSize为一个页面显示几条数据,在 "select * from tableName limit num1,num2”这个查询语句中,

num1就是(pageNum-1)*pageSize,num2就是pageSize,明白了这个关系之后,那么就好办了,代码在下面:

  1. //分页的函数
  2.  
  3. function news($pageNum = 1, $pageSize = 3)
  4.  
  5. {
  6.  
  7. $array = array();
  8.  
  9. $coon = mysqli_connect("localhost", "root");
  10.  
  11. mysqli_select_db($coon, "jereh");
  12.  
  13. mysqli_set_charset($coon, "utf8");
  14.  
  15. // limit为约束显示多少条信息,后面有两个参数,第一个为从第几个开始,第二个为长度
  16.  
  17. $rs = "select * from n_content limit " . (($pageNum - 1) * $pageSize) . "," . $pageSize;
  18.  
  19. $r = mysqli_query($coon, $rs);
  20.  
  21. while ($obj = mysqli_fetch_object($r)) {
  22.  
  23. $array[] = $obj;
  24.  
  25. }
  26.  
  27. mysqli_close($coon,"jereh");
  28.  
  29. return $array;
  30.  
  31. }

上面的代码中,值得注意的是,limit后面一定要加一个空格,不然会出错误。

2、建立第二个函数,用来显示总页数的函数

这个没什么新的知识点,都是以前写过的知识点了,直接看代码吧。

  1. //显示总页数的函数
  2.  
  3. function allNews()
  4.  
  5. {
  6.  
  7. $coon = mysqli_connect("localhost", "root");
  8.  
  9. mysqli_select_db($coon, "jereh");
  10.  
  11. mysqli_set_charset($coon, "utf8");
  12.  
  13. $rs = "select count(*) num from n_content"; //可以显示出总页数
  14.  
  15. $r = mysqli_query($coon, $rs);
  16.  
  17. $obj = mysqli_fetch_object($r);
  18.  
  19. mysqli_close($coon,"jereh");
  20.  
  21. return $obj->num;
  22.  
  23. }

3、调用这两个函数,进行初步的处理

我们想做下一页、下一页的结果,需要用到get方法在本页面传数据,那么我们在刷新页面的时候,肯定get是得不到数据的,所以需要用三目运算了。

  1. <?php
  2.  
  3. @$allNum = allNews();
  4.  
  5. @$pageSize = 3; //约定每页显示的信息条数
  6.  
  7. @$pageNum = empty($_GET["pageNum"])?1:$_GET["pageNum"];
  8.  
  9. @$endPage = ceil($allNum/$pageSize); //总页数
  10.  
  11. @$array = news($pageNum,$pageSize);
  12.  
  13. ?>

4、在页面进行显示

在页面显示的话,需要用到了foreach循环了,代码简单,看下面:

  1. <table border="1" style="text-align: center" cellpadding="0">
  2.  
  3. <tr>
  4.  
  5. <td>编号</td>
  6.  
  7. <td>新闻标题</td>
  8.  
  9. <td>来源</td>
  10.  
  11. <td>点击率</td>
  12.  
  13. <td>发布日期</td>
  14.  
  15. </tr>
  16.  
  17. <?php
  18.  
  19. foreach($array as $key=>$values){
  20.  
  21. echo "<tr>";
  22.  
  23. echo "<td>{$values->id}</td>";
  24.  
  25. echo "<td>{$values->title}</td>";
  26.  
  27. echo "<td>{$values->src}</td>";
  28.  
  29. echo "<td>{$values->indexs}</td>";
  30.  
  31. echo "<td>{$values->times}</td>";
  32.  
  33. echo "</tr>";
  34.  
  35. }
  36.  
  37. ?>
  38.  
  39. </table>

5、实现上一页,下一页的效果

要实现页面跳转的效果,我们需要用到了a标签的href属性,地址写“?pageNum = ...”这个pageNum是我们自己定义的,由于是get来传递的,在上一步里面我们已经用$_GET接受了参数,所以我们只需要进行get的参数传递就可以了;

首页:“pageNum=1”;

上一页:"pageNum=<?php echo $pageNum==1?1:$pageNum-1?>"

下一页:"pageNum=<?php echo $pageNum==$endPage ?$endPage :$pageNum+1?>"

尾页:“pageNum=<?php echo $pageNum =$endPage?>”;

特别注意的是,”pageNum=”的时候后面千万千万不要空格,代码如下:

  1. <a href="?pageNum=1" rel="external nofollow" rel="external nofollow" >首页</a>
  2.  
  3. <a href="?pageNum=<?php echo $pageNum==1?1:($pageNum-1)?>" rel="external nofollow" rel="external nofollow" >上一页</a>
  4.  
  5. <a href="?pageNum=<?php echo $pageNum==$endPage?$endPage:($pageNum+1)?>" rel="external nofollow" rel="external nofollow" >下一页</a>
  6.  
  7. <a href="?pageNum=<?php echo $endPage?>" rel="external nofollow" rel="external nofollow" >尾页</a>

代码如下:

  1. <!DOCTYPE html>
  2.  
  3. <html>
  4.  
  5. <head>
  6.  
  7. <meta charset="UTF-8">
  8.  
  9. <title>分页</title>
  10.  
  11. <?php
  12.  
  13.  
  14. //分页的函数
  15.  
  16. function news($pageNum = 1, $pageSize = 3)
  17.  
  18. {
  19.  
  20. $array = array();
  21.  
  22. $coon = mysqli_connect("localhost", "root");
  23.  
  24. mysqli_select_db($coon, "jereh");
  25.  
  26. mysqli_set_charset($coon, "utf8");
  27.  
  28. // limit为约束显示多少条信息,后面有两个参数,第一个为从第几个开始,第二个为长度
  29.  
  30. $rs = "select * from n_content limit " . (($pageNum - 1) * $pageSize) . "," . $pageSize;
  31.  
  32. $r = mysqli_query($coon, $rs);
  33.  
  34. while ($obj = mysqli_fetch_object($r)) {
  35.  
  36. $array[] = $obj;
  37.  
  38. }
  39.  
  40. mysqli_close($coon,"jereh");
  41.  
  42. return $array;
  43.  
  44. }
  45.  
  46.  
  47. //显示总页数的函数
  48.  
  49. function allNews()
  50.  
  51. {
  52.  
  53. $coon = mysqli_connect("localhost", "root");
  54.  
  55. mysqli_select_db($coon, "jereh");
  56.  
  57. mysqli_set_charset($coon, "utf8");
  58.  
  59. $rs = "select count(*) num from n_content"; //可以显示出总页数
  60.  
  61. $r = mysqli_query($coon, $rs);
  62.  
  63. $obj = mysqli_fetch_object($r);
  64.  
  65. mysqli_close($coon,"jereh");
  66.  
  67. return $obj->num;
  68.  
  69. }
  70.  
  71.  
  72. @$allNum = allNews();
  73.  
  74. @$pageSize = 3; //约定没页显示几条信息
  75.  
  76. @$pageNum = empty($_GET["pageNum"])?1:$_GET["pageNum"];
  77.  
  78. @$endPage = ceil($allNum/$pageSize); //总页数
  79.  
  80. @$array = news($pageNum,$pageSize);
  81.  
  82. ?>
  83.  
  84. </head>
  85.  
  86. <body>
  87.  
  88. <table border="1" style="text-align: center" cellpadding="0">
  89.  
  90. <tr>
  91.  
  92. <td>编号</td>
  93.  
  94. <td>新闻标题</td>
  95.  
  96. <td>来源</td>
  97.  
  98. <td>点击率</td>
  99.  
  100. <td>发布日期</td>
  101.  
  102. </tr>
  103.  
  104. <?php
  105.  
  106. foreach($array as $key=>$values){
  107.  
  108. echo "<tr>";
  109.  
  110. echo "<td>{$values->id}</td>";
  111.  
  112. echo "<td>{$values->title}</td>";
  113.  
  114. echo "<td>{$values->src}</td>";
  115.  
  116. echo "<td>{$values->indexs}</td>";
  117.  
  118. echo "<td>{$values->times}</td>";
  119.  
  120. echo "</tr>";
  121.  
  122. }
  123.  
  124. ?>
  125.  
  126. </table>
  127.  
  128. <div>
  129.  
  130. <a href="?pageNum=1" rel="external nofollow" rel="external nofollow" >首页</a>
  131.  
  132. <a href="?pageNum=<?php echo $pageNum==1?1:($pageNum-1)?>" rel="external nofollow" rel="external nofollow" >上一页</a>
  133.  
  134. <a href="?pageNum=<?php echo $pageNum==$endPage?$endPage:($pageNum+1)?>" rel="external nofollow" rel="external nofollow" >下一页</a>
  135.  
  136. <a href="?pageNum=<?php echo $endPage?>" rel="external nofollow" rel="external nofollow" >尾页</a>
  137.  
  138.  
  139. </div>
  140.  
  141.  
  142. </body>
  143.  
  144. </html>

以上就是php如何实现分页功能的详细内容,感谢大家的学习和对w3xue的支持。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号