php实现分页显示


Posted in PHP onNovember 03, 2015

所谓分页显示,也就是将数据库中的结果集人为的分成一段一段的来显示,这里需要两个初始的参数:

每页多少条记录($PageSize)?

当前是第几页($CurrentPageID)?

现在只要再给我一个结果集,我就可以显示某段特定的结果出来。
至于其他的参数,比如:上一页($PReviousPageID)下一页($NextPageID)总页数($numPages)等等,都可以根据之前的知识获得。

以MySQL数据库为例,如果要从表内截取某段内容,sql语句可以用:select * from table limit offset, rows。看看下面一组sql语句,尝试一下发现其中的规率。

前10条记录:select * from table limit 0,10

第11至20条记录:select * from table limit 10,10

第21至30条记录:select * from table limit 20,10

……

这一组sql语句其实就是当$PageSize=10的时候取表内每一页数据的sql语句,我们可以总结出这样一个模板:

select * from table limit ($CurrentPageID - 1) * $PageSize, $PageSize

利用这个模板代入对应的值和上边那一组sql语句对照一下看看是不是那么回事。搞定了最重要的如何获取数据的问题以后,剩下的就仅仅是传递参数,构造合适的sql语句然后使用php从数据库内获取数据并显示了。以下我将用具体代码加以说明。
简单代码实现
请详细阅读以下代码,自己调试运行一次,最好把它修改一次,加上自己的功能,比如搜索等等。

// 建立数据库连接 
$link = mysql_connect("localhost", "mysql_user", "mysql_passWord")  
   or die("Could not connect: " . mysql_error());  
// 获取当前页数 
if( isset($_GET['page']) ){ 
  $page = intval( $_GET['page'] ); 
} 
else{ 
  $page = 1; 
}  
// 每页数量 
$PageSize = 10;  
// 获取总数据量 
$sql = "select count(*) as amount from table"; 
$result = mysql_query($sql); 
$row = mysql_fetch_row($result); 
$amount = $row['amount'];  
// 记算总共有多少页 
if( $amount ){ 
  if( $amount < $page_size ){ $page_count = 1; }        //如果总数据量小于$PageSize,那么只有一页 
  if( $amount % $page_size ){                 //取总数据量除以每页数的余数 
    $page_count = (int)($amount / $page_size) + 1;      //如果有余数,则页数等于总数据量除以每页数的结果取整再加一 
  }else{ 
    $page_count = $amount / $page_size;           //如果没有余数,则页数等于总数据量除以每页数的结果 
  } 
} 
else{ 
  $page_count = 0; 
} 
// 翻页链接 
$page_string = ''; 
if( $page == 1 ){ 
  $page_string .= '第一页|上一页|'; 
} 
else{ 
  $page_string .= '第一页|.($page-1).'>上一页|'; 
}  
if( ($page == $page_count) || ($page_count == 0) ){ 
  $page_string .= '下一页|尾页'; 
} 
else{ 
  $page_string .= '.($page+1).'>下一页|.$page_count.'>尾页'; 
} 
// 获取数据,以二维数组格式返回结果 
if( $amount ){ 
  $sql = "select * from table order by id desc limit ". ($page-1)*$page_size .", $page_size"; 
  $result = mysql_query($sql); 
  while ( $row = mysql_fetch_row($result) ){ 
    $rowset[] = $row; 
  } 
}else{ 
  $rowset = array(); 
} 
// 没有包含显示结果的代码,那不在讨论范围,只要用foreach就可以很简单的用得到的二维数组来显示结果 
?>

以上就是php实现分页显示的方法,希望对大家的学习有所帮助

PHP 相关文章推荐
php 魔术方法使用说明
Oct 20 PHP
PHP中VC6、VC9、TS、NTS版本的区别与用法详解
Oct 26 PHP
php后门URL的防范
Nov 12 PHP
md5 16位二进制与32位字符串相互转换示例
Dec 30 PHP
php中ob_flush函数和flush函数用法分析
Mar 18 PHP
php带抄送和密件抄送的邮件发送方法
Mar 20 PHP
表单提交错误后返回内容消失问题的解决方法(PHP网站)
Oct 20 PHP
PHP Cookei记录用户历史浏览信息的代码
Feb 03 PHP
thinkphp3.x自定义Action、Model及View的简单实现方法
May 19 PHP
浅谈PHP eval()函数定义和用法
Jun 21 PHP
微信公众号开发之获取位置信息php代码
Jun 13 PHP
PHP字符串和十六进制如何实现互相转换
Jul 16 PHP
PHP翻页跳转功能实现方法
Nov 30 #PHP
php中注册器模式类用法实例分析
Nov 03 #PHP
php实现zip文件解压操作
Nov 03 #PHP
thinkphp如何获取客户端IP
Nov 03 #PHP
php去除二维数组的重复项方法
Nov 03 #PHP
php在数据库抽象层简单使用PDO的方法
Nov 03 #PHP
smarty简单应用实例
Nov 03 #PHP
You might like
全国中波电台频率表
2020/03/11 无线电
PHP与MySQL开发中页面乱码的产生与解决
2008/03/27 PHP
PHP中函数内引用全局变量的方法
2008/10/20 PHP
PHP页面间参数传递的四种方法详解
2013/06/09 PHP
javascript之ESC(第二类混淆)
2007/05/06 Javascript
csdn 博客中实现运行代码功能实现
2009/08/29 Javascript
JS扩展方法实例分析
2015/04/15 Javascript
javascript实现表单提交后,提交按钮不可用的方法
2015/04/18 Javascript
JS如何判断json是否为空
2016/07/06 Javascript
JavaScript鼠标事件,点击鼠标右键,弹出div的简单实例
2016/08/03 Javascript
JS中跨页面调用变量和函数的方法(例如a.js 和 b.js中互相调用)
2016/11/01 Javascript
prototype与__proto__区别详细介绍
2017/01/09 Javascript
vue2.0实现倒计时的插件(时间戳 刷新 跳转 都不影响)
2017/03/30 Javascript
Angular4实现动态添加删除表单输入框功能
2017/08/11 Javascript
关于JS与jQuery中的文档加载问题
2017/08/22 jQuery
详解react-redux插件入门
2018/04/19 Javascript
微信小程序中使用ECharts 异步加载数据的方法
2018/06/27 Javascript
JS中实现浅拷贝和深拷贝的代码详解
2019/06/05 Javascript
JS数据类型判断的几种常用方法
2020/07/07 Javascript
wxpython中利用线程防止假死的实现方法
2014/08/11 Python
wxPython中listbox用法实例详解
2015/06/01 Python
浅谈python中str字符串和unicode对象字符串的拼接问题
2018/12/04 Python
Python使用import导入本地脚本及导入模块的技巧总结
2019/08/07 Python
使用Python将Exception异常错误堆栈信息写入日志文件
2020/04/08 Python
Python偏函数Partial function使用方法实例详解
2020/06/17 Python
CSS3教程(10):CSS3 HSL声明设置颜色
2009/04/02 HTML / CSS
Becextech新西兰:数码单反相机和手机在线商店
2018/04/27 全球购物
美国瑜伽服装和装备购物网站:Mukha Yoga
2019/02/22 全球购物
定制别致的瑜伽垫:Sugarmat
2019/06/21 全球购物
Fanatics官网:运动服装、球衣、运动装备
2020/10/12 全球购物
大学生职业规划前言模板
2013/12/27 职场文书
迅雷Cued工作心得体会
2014/01/27 职场文书
会计求职自荐信
2014/06/20 职场文书
2014年客房服务员工作总结
2014/11/18 职场文书
土建技术员岗位职责
2015/04/11 职场文书
Golang 遍历二叉树
2022/04/19 Golang