php实现分页功能的详细实例方法


Posted in PHP onSeptember 29, 2019

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

首先,我们需要准备在数据库里面准备一个表,并且插入数据,这些都是必需的前提工作了,不多说,如图所示(库名为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,明白了这个关系之后,那么就好办了,代码在下面:

//分页的函数

function news($pageNum = 1, $pageSize = 3)

{

 $array = array();

 $coon = mysqli_connect("localhost", "root");

 mysqli_select_db($coon, "jereh");

 mysqli_set_charset($coon, "utf8");

 // limit为约束显示多少条信息,后面有两个参数,第一个为从第几个开始,第二个为长度

 $rs = "select * from n_content limit " . (($pageNum - 1) * $pageSize) . "," . $pageSize;

 $r = mysqli_query($coon, $rs);

 while ($obj = mysqli_fetch_object($r)) {

  $array[] = $obj;

 }

 mysqli_close($coon,"jereh");

 return $array;

}

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

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

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

//显示总页数的函数

function allNews()

{

 $coon = mysqli_connect("localhost", "root");

 mysqli_select_db($coon, "jereh");

 mysqli_set_charset($coon, "utf8");

 $rs = "select count(*) num from n_content"; //可以显示出总页数

 $r = mysqli_query($coon, $rs);

 $obj = mysqli_fetch_object($r);

 mysqli_close($coon,"jereh");

 return $obj->num;

}

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

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

<?php

 @$allNum = allNews();

 @$pageSize = 3; //约定每页显示的信息条数

 @$pageNum = empty($_GET["pageNum"])?1:$_GET["pageNum"];

 @$endPage = ceil($allNum/$pageSize); //总页数

 @$array = news($pageNum,$pageSize);

?>

4、在页面进行显示

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

<table border="1" style="text-align: center" cellpadding="0">

 <tr>

  <td>编号</td>

  <td>新闻标题</td>

  <td>来源</td>

  <td>点击率</td>

  <td>发布日期</td>

 </tr>

 <?php

 foreach($array as $key=>$values){

  echo "<tr>";

  echo "<td>{$values->id}</td>";

  echo "<td>{$values->title}</td>";

  echo "<td>{$values->src}</td>";

  echo "<td>{$values->indexs}</td>";

  echo "<td>{$values->times}</td>";

  echo "</tr>";

 }

 ?>

</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=”的时候后面千万千万不要空格,代码如下:

<a href="?pageNum=1" rel="external nofollow" rel="external nofollow" >首页</a>

<a href="?pageNum=<?php echo $pageNum==1?1:($pageNum-1)?>" rel="external nofollow" rel="external nofollow" >上一页</a>

<a href="?pageNum=<?php echo $pageNum==$endPage?$endPage:($pageNum+1)?>" rel="external nofollow" rel="external nofollow" >下一页</a>

<a href="?pageNum=<?php echo $endPage?>" rel="external nofollow" rel="external nofollow" >尾页</a>

代码如下:

<!DOCTYPE html>

<html>

<head>

 <meta charset="UTF-8">

 <title>分页</title>

 <?php

 

//分页的函数

function news($pageNum = 1, $pageSize = 3)

{

 $array = array();

 $coon = mysqli_connect("localhost", "root");

 mysqli_select_db($coon, "jereh");

 mysqli_set_charset($coon, "utf8");

 // limit为约束显示多少条信息,后面有两个参数,第一个为从第几个开始,第二个为长度

 $rs = "select * from n_content limit " . (($pageNum - 1) * $pageSize) . "," . $pageSize;

 $r = mysqli_query($coon, $rs);

 while ($obj = mysqli_fetch_object($r)) {

  $array[] = $obj;

 }

 mysqli_close($coon,"jereh");

 return $array;

}

 

//显示总页数的函数

function allNews()

{

 $coon = mysqli_connect("localhost", "root");

 mysqli_select_db($coon, "jereh");

 mysqli_set_charset($coon, "utf8");

 $rs = "select count(*) num from n_content"; //可以显示出总页数

 $r = mysqli_query($coon, $rs);

 $obj = mysqli_fetch_object($r);

 mysqli_close($coon,"jereh");

 return $obj->num;

}

 

 @$allNum = allNews();

 @$pageSize = 3; //约定没页显示几条信息

 @$pageNum = empty($_GET["pageNum"])?1:$_GET["pageNum"];

 @$endPage = ceil($allNum/$pageSize); //总页数

 @$array = news($pageNum,$pageSize);

 ?>

</head>

<body>

<table border="1" style="text-align: center" cellpadding="0">

 <tr>

  <td>编号</td>

  <td>新闻标题</td>

  <td>来源</td>

  <td>点击率</td>

  <td>发布日期</td>

 </tr>

 <?php

 foreach($array as $key=>$values){

  echo "<tr>";

  echo "<td>{$values->id}</td>";

  echo "<td>{$values->title}</td>";

  echo "<td>{$values->src}</td>";

  echo "<td>{$values->indexs}</td>";

  echo "<td>{$values->times}</td>";

  echo "</tr>";

 }

 ?>

</table>

<div>

 <a href="?pageNum=1" rel="external nofollow" rel="external nofollow" >首页</a>

 <a href="?pageNum=<?php echo $pageNum==1?1:($pageNum-1)?>" rel="external nofollow" rel="external nofollow" >上一页</a>

 <a href="?pageNum=<?php echo $pageNum==$endPage?$endPage:($pageNum+1)?>" rel="external nofollow" rel="external nofollow" >下一页</a>

 <a href="?pageNum=<?php echo $endPage?>" rel="external nofollow" rel="external nofollow" >尾页</a>

 

</div>

 

</body>

</html>

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

PHP 相关文章推荐
用PHP动态生成虚拟现实VRML网页
Oct 09 PHP
PHP-redis中文文档介绍
Feb 07 PHP
浅析php插件 HTMLPurifier HTML解析器
Jul 01 PHP
PHP字符串比较函数strcmp()和strcasecmp()使用总结
Nov 19 PHP
WordPress中转义HTML与过滤链接的相关PHP函数使用解析
Dec 22 PHP
替换php字符串中的单引号为双引号的方法
Feb 16 PHP
PHP实现阿里大鱼短信验证的实例代码
Jul 10 PHP
php实现微信企业付款到个人零钱功能
Oct 09 PHP
yii2的restful api路由实例详解
May 14 PHP
php中的依赖注入实例详解
Aug 14 PHP
php的RSA加密解密算法原理与用法分析
Jan 23 PHP
php使用event扩展的io复用测试的示例
Oct 20 PHP
laravel实现于语言包的完美切换方法
Sep 29 #PHP
laravel validate 设置为中文的例子(验证提示为中文)
Sep 29 #PHP
Laravel中validation验证 返回中文提示 全局设置的方法
Sep 29 #PHP
Laravel自定义 封装便捷返回Json数据格式的引用方法
Sep 29 #PHP
laravel dingo API返回自定义错误信息的实例
Sep 29 #PHP
Laravel框架Auth用户认证操作实例分析
Sep 29 #PHP
laravel Validator ajax返回错误信息的方法
Sep 29 #PHP
You might like
phpmyadmin 常用选项设置详解版
2010/03/07 PHP
PHP设计模式(三)建造者模式Builder实例详解【创建型】
2020/05/02 PHP
jQuery使用height()获取高度需要注意的地方
2014/12/13 Javascript
D3.js中data(), enter() 和 exit()的问题详解
2015/08/17 Javascript
javascript使用 concat 方法对数组进行合并的方法
2016/09/08 Javascript
javascript中mouseenter与mouseover的异同
2017/06/06 Javascript
用node和express连接mysql实现登录注册的实现代码
2017/07/05 Javascript
详解如何用babel转换es6的class语法
2018/04/03 Javascript
Vue 使用中的小技巧
2018/04/26 Javascript
浅谈webpack 构建性能优化策略小结
2018/06/13 Javascript
详解@angular/cli 改变默认启动端口两种方式
2018/11/29 Javascript
layui数据表格重载实现往后台传参
2019/11/15 Javascript
node.js基于dgram数据报模块创建UDP服务器和客户端操作示例
2020/02/12 Javascript
浅谈Vue使用Elementui修改默认的最快方法
2020/12/05 Vue.js
nodejs+express最简易的连接数据库的方法
2020/12/23 NodeJs
jQuery实现简单轮播图效果
2020/12/27 jQuery
Python2中的raw_input() 与 input()
2015/06/12 Python
Python3实现并发检验代理池地址的方法
2016/09/18 Python
详解django三种文件下载方式
2018/04/06 Python
Python3.5 Pandas模块之DataFrame用法实例分析
2019/04/23 Python
选择Python写网络爬虫的优势和理由
2019/07/07 Python
用Python实现最速下降法求极值的方法
2019/07/10 Python
如何修复使用 Python ORM 工具 SQLAlchemy 时的常见陷阱
2019/11/19 Python
new_zeros() pytorch版本的转换方式
2020/02/18 Python
用ldap作为django后端用户登录验证的实现
2020/12/07 Python
食品销售计划书
2014/04/26 职场文书
文明家庭先进事迹材料
2014/05/14 职场文书
最常使用的求职信
2014/05/25 职场文书
英文感谢信格式
2015/01/21 职场文书
民事二审代理词
2015/05/25 职场文书
2015年学校精神文明工作总结
2015/05/27 职场文书
圣诞晚会主持词
2015/07/01 职场文书
FP-growth算法发现频繁项集——构建FP树
2021/06/24 Python
简述Java中throw-throws异常抛出
2021/08/07 Java/Android
Mysql数据库中datetime、bigint、timestamp来表示时间选择,谁来存储时间效率最高
2021/08/23 MySQL
Mysql Innodb存储引擎之索引与算法
2022/02/15 MySQL