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 相关文章推荐
网站当前的在线人数
Oct 09 PHP
php中设置多级目录session的问题
Aug 08 PHP
php获取目录所有文件并将结果保存到数组(实例)
Oct 25 PHP
ThinkPHP调用百度翻译类实现在线翻译
Jun 26 PHP
yii实现图片上传及缩略图生成的方法
Dec 04 PHP
CI框架中site_url()和base_url()的区别
Jan 07 PHP
php实现上传图片保存到数据库的方法
Feb 11 PHP
标准版Eclipse搭建PHP环境的详细步骤
Nov 18 PHP
PHP 返回13位时间戳的实现代码
May 13 PHP
CI框架文件上传类及图像处理类用法分析
May 18 PHP
Yii2 rbac权限控制之rule教程详解
Jun 23 PHP
PHP设计模式(八)装饰器模式Decorator实例详解【结构型】
May 02 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
php实现对两个数组进行减法操作的方法
2015/04/17 PHP
php实现的验证码文件类实例
2015/06/18 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
PHP使用SOAP调用API操作示例
2018/12/25 PHP
Valerio 发布了 Mootools
2006/09/23 Javascript
js兼容标准的表格变色效果
2008/06/28 Javascript
js split 的用法和定义 js split分割字符串成数组的实例代码
2012/05/13 Javascript
JavaScript实现存储HTML字符串示例
2014/04/21 Javascript
js调用百度地图及调用百度地图的搜索功能
2015/09/07 Javascript
Bootstrap树形菜单插件TreeView.js使用方法详解
2016/11/01 Javascript
微信端开发--登录小程序步骤
2017/01/11 Javascript
js实现手机拍照上传功能
2017/01/17 Javascript
微信小程序侧边栏滑动特效(左右滑动)
2017/01/23 Javascript
js 两个日期比较相差多少天的实例
2017/10/19 Javascript
dropload.js插件下拉刷新和上拉加载使用详解
2017/10/20 Javascript
webpack4 SCSS提取和懒加载的示例
2018/09/03 Javascript
小程序组件之仿微信通讯录的实现代码
2018/09/12 Javascript
jQuery时间戳和日期相互转换操作示例
2018/12/07 jQuery
vue+element+Java实现批量删除功能
2019/04/08 Javascript
17个Python小技巧分享
2015/01/23 Python
python数据结构之图深度优先和广度优先实例详解
2015/07/08 Python
Python语言快速上手学习方法
2018/12/14 Python
对Python模块导入时全局变量__all__的作用详解
2019/01/11 Python
python爬虫 基于requests模块的get请求实现详解
2019/08/20 Python
python在OpenCV里实现投影变换效果
2019/08/30 Python
python return逻辑判断表达式实现解析
2019/12/02 Python
Matplotlib 绘制饼图解决文字重叠的方法
2020/07/24 Python
Python字节单位转换(将字节转换为K M G T)
2021/03/02 Python
HTML5中语义化 b 和 i 标签
2008/10/17 HTML / CSS
2014自荐信的写作技巧
2014/01/28 职场文书
《青山处处埋忠骨》教学反思
2014/04/22 职场文书
2014年学生会干事工作总结
2014/11/07 职场文书
优秀党员个人总结
2015/02/14 职场文书
班主任经验交流心得体会
2015/11/02 职场文书
2019年个人工作总结范文
2019/03/25 职场文书
python基础入门之字典和集合
2021/06/13 Python