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类
Oct 09 PHP
关于Appserv无法打开localhost问题的解决方法
Oct 16 PHP
关于php fread()使用技巧
Jan 22 PHP
让PHP开发者事半功倍的十大技巧小结
Apr 20 PHP
批量获取memcache值并按key的顺序返回的实现代码
Jun 14 PHP
PHP随机字符串生成代码(包括大小写字母)
Jun 24 PHP
ThinkPHP之getField详解
Jun 20 PHP
php实现webservice实例
Nov 06 PHP
php实现网站顶踩功能的完整前端代码
Jul 19 PHP
PHP指定截取字符串中的中英文或数字字符的实例分享
Mar 18 PHP
php微信开发之图片回复功能
Jun 14 PHP
PHPStorm2020.1永久激活及下载更新至2020(推荐)
Sep 25 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
解决cPanel无法安装php5.2.17
2014/06/22 PHP
再谈IE中Flash控件的自动激活 ObjectWrap
2007/03/09 Javascript
分页栏的web标准实现
2011/11/01 Javascript
JQuery模板插件 jquery.tmpl 动态ajax扩展
2011/11/10 Javascript
全面兼容的javascript时间格式化函数(比较实用)
2014/05/14 Javascript
js利用prototype调用Array的slice方法示例
2014/06/09 Javascript
javascript中createElement的两种创建方式
2015/05/14 Javascript
详细解读AngularJS中的表单验证编程
2015/06/19 Javascript
jQuery实现伪分页的方法分享
2016/02/17 Javascript
AngularJS equal比较对象实例详解
2016/09/14 Javascript
HTML中setCapture、releaseCapture 使用方法浅析
2016/09/25 Javascript
浅析Node.js:DNS模块的使用
2016/11/23 Javascript
详解网站中图片日常使用以及优化手法
2017/01/09 Javascript
Bootstrap jquery.twbsPagination.js动态页码分页实例代码
2017/02/20 Javascript
vue实现图片滚动的示例代码(类似走马灯效果)
2018/03/03 Javascript
vue-cli3.0如何使用CDN区分开发、生产、预发布环境
2018/11/22 Javascript
jQuery移动端跑马灯抽奖特效升级版(抽奖概率固定)实现方法
2019/01/18 jQuery
记一次用vue做的活动页的方法步骤
2019/04/11 Javascript
基于Vue SEO的四种方案(小结)
2019/07/01 Javascript
使用 Opentype.js 生成字体子集的实例代码详解
2020/05/25 Javascript
详细分析Node.js 模块系统
2020/06/28 Javascript
echarts 使用formatter 修改鼠标悬浮事件信息操作
2020/07/20 Javascript
Python虚拟环境Virtualenv使用教程
2015/05/18 Python
Python mutiprocessing多线程池pool操作示例
2019/01/30 Python
django基于cors解决跨域请求问题详解
2019/08/06 Python
如何让python的运行速度得到提升
2020/07/08 Python
如何使用Django Admin管理后台导入CSV
2020/11/06 Python
Python扫描端口的实现
2021/01/25 Python
Ever New加拿大官网:彰显女性美
2018/10/05 全球购物
Book Depository澳大利亚:世界领先的专业在线书店之一
2018/12/27 全球购物
四川internet信息高速公路(C#)笔试题
2012/02/29 面试题
拉丁舞学习者的自我评价
2013/10/27 职场文书
追悼会主持词
2014/03/20 职场文书
领导班子作风建设年个人整改措施
2014/09/29 职场文书
PO模式在selenium自动化测试框架的优势
2022/03/20 Python
《吸血鬼幸存者》新内容发布 追加多个全新模式
2022/04/07 其他游戏