PHP使用Mysqli类库实现完美分页效果的方法


Posted in PHP onApril 07, 2016

本文实例讲述了PHP使用Mysqli类库实现完美分页效果的方法。分享给大家供大家参考,具体如下:

本篇文章是基于的是我的上篇文章《PHP数据库操作之基于Mysqli的数据库操作类库》而量身打造,怎么使用 M 类库中的 FetchAll 方法做出完美分页。

分页在我们每个项目中都是必不可少的,而且出现的频率非常之多。这样就要求我们程序员在项目中怎样去以最快的速度、最简洁的代码去实现分页方案。

分页的实现大部分是依据 URL 传入的参数(一般是page)来实现,比如:http://localhost/article.php?page=2 表示取第二页数据

建议:您在看本篇文章之时,请确保您已学习过我的上篇文章《PHP数据库操作之基于Mysqli的数据库操作类库》

下面我们根据 M 类库来进行分页的讲解,博文中出现的代码,最后附有下载地址,包括测试数据库文件。

1、建立配置文件 config.inc.php

代码清单如下

<?php
header('Content-Type:text/html;Charset=utf-8'); //设置header编码
define('ROOT_PATH', dirname(__FILE__)); //设置根目录
define('DB_HOST', 'localhost'); //数据库服务器地址
define('DB_USER', 'root'); //数据库用户名
define('DB_PWD', '×××');//数据库密码,请根据机器填写
define('DB_NAME', '×××'); //数据库名称,请根据机器填写
define('DB_PORT', '3306'); //数据库端口,请根据机器填写
function __autoload($className) {
  require_once ROOT_PATH . '/includes/'. ucfirst($className) .'.class.php'; //自动加载类库文件
}
?>

2、建立资讯测试文件 article.php

注:因本人 CSS 能力有限,所以为了演示功能,只使用了单纯的 HTML
代码清单及注释如下

<?php
require 'config.inc.php'; //引入配置文件
$m = new M(); //实例化 M 类
$total = $m->Total('jzy_article'); //资讯文章总数
$page = new Page($total, 20); //实例化分页类
/*
注意事项:
1、实例分页 Page 类的时候,需要传两个参数:记录总数;每页显示的记录数。
2、当传入参数后,Page 类中有个setLimit()方法会自动计算出 SQL 中的 limit 值。比如:URL 参数中 page 为1的时候,limit 值为“0,20”;为2的时候,limit 值为“20,20”……
3、计算出来的 $page->limit,必须放在 FetchAll 方法中的最后一位,详情请查看 FetchAll 方法
*/
$data = $m->FetchAll("jzy_article", "title, source, writer, pubdate", "", "id DESC", $page->limit); //根据 M 类库中的 FetchAll 方法获取数据
?>
<style>
/* 分页样式 */
#page {text-align:right;  padding:10px;clear:both;}#page a {border:1px solid #666;padding:2px 5px;margin:0 2px;color:#3b6ea5;text-decoration:none;}#page a:hover,#page span.me {color:#fff;border:1px solid #000;background:#000;text-decoration:none;}#page span.disabled {border:1px solid #ccc;padding:2px 5px;margin:0 2px;color:#ccc;}#page span.me {padding:2px 5px;margin:0 2px;}
</style>
<table width="1000" border="1" style="border-collapse:collapse; font-size:13px;">
<tr height="30">
  <th width="483">标题</th>
  <th width="141">来源</th>
  <th width="154">作者</th>
  <th width="194">添加时间</th>
</tr>
<?php
foreach ($data as $v) { //循环取出数据
?>
<tr>
  <td> <?php echo $v['title']; ?></td>
  <td align="center"><?php echo $v['source']; ?></td>
  <td align="center"><?php echo $v['writer']; ?></td>
  <td align="center"><?php echo $v['pubdate']; ?></td>
</tr>
<?php
}
?>
<tr>
  <td id="page" colspan="4"><?php echo $page->fpage(); ?></td> <!-- 调出分页类 -->
</tr>
</table>

3、访问测试效果

打开浏览器,输入测试的url地址,你的浏览器应该会出现以下效果

PHP使用Mysqli类库实现完美分页效果的方法

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
层叠菜单的动态生成
Oct 09 PHP
php读取数据库信息的几种方法
May 24 PHP
php网站来路获取代码(针对搜索引擎)
Jun 08 PHP
PHP目录函数实现创建、读取目录教程实例
Jan 13 PHP
Function eregi is deprecated (解决方法)
Jun 21 PHP
ini_set的用法介绍
Jan 07 PHP
php加密算法之实现可逆加密算法和解密分享
Jan 21 PHP
ThinkPHP在Cli模式下使用模板引擎的方法
Sep 25 PHP
PHP可变函数学习小结
Nov 29 PHP
PHP引用返回用法示例
May 28 PHP
PHP+MySQL高并发加锁事务处理问题解决方法
Apr 30 PHP
PHP 99乘法表的几种实现代码
Oct 13 PHP
Linux下编译redis和phpredis的方法
Apr 07 #PHP
php 实现进制相互转换
Apr 07 #PHP
Linux(CentOS)下PHP扩展PDO编译安装的方法
Apr 07 #PHP
php制作简单模版引擎
Apr 07 #PHP
thinkphp框架下实现登录、注册、找回密码功能
Apr 06 #PHP
非常有用的9个PHP代码片段
Apr 06 #PHP
10个对初学者非常有用的PHP技巧
Apr 06 #PHP
You might like
菜鸟修复电子管记
2021/03/02 无线电
PHP中一个控制字符串输出的函数
2006/10/09 PHP
Gregarius中文日期格式问题解决办法
2008/04/22 PHP
PHP中用正则表达式清除字符串的空白
2011/01/17 PHP
Thinkphp极验滑动验证码实现步骤解析
2020/11/24 PHP
IE本地存储userdata的一个bug说明
2010/07/01 Javascript
分享一个用Mootools写的鼠标滑过进度条改变进度值的实现代码
2011/12/12 Javascript
Jquery实现搜索框提示功能示例代码
2013/08/13 Javascript
深入分析js的冒泡事件
2014/12/05 Javascript
分享33个jQuery与CSS3实现的绚丽鼠标悬停效果
2014/12/15 Javascript
微信企业号开发之微信考勤Cookies的使用
2015/09/11 Javascript
javascript弹性运动效果简单实现方法
2016/01/08 Javascript
JavaScript中误用/g导致的正则test()无法正确重复执行的解决方案
2016/07/27 Javascript
vue2利用Bus.js如何实现非父子组件通信详解
2017/08/25 Javascript
微信小程序template模板实例详解
2017/10/27 Javascript
js数组方法reduce经典用法代码分享
2018/01/07 Javascript
微信小程序车牌号码模拟键盘输入功能的实现代码
2018/11/11 Javascript
jQuery属性选择器用法实例分析
2019/06/28 jQuery
node express使用HTML模板的方法示例
2019/08/22 Javascript
layui实现数据表格隐藏列的示例
2019/10/25 Javascript
vue 中 elment-ui table合并上下两行相同数据单元格
2019/12/26 Javascript
介绍Python的Django框架中的QuerySets
2015/04/20 Python
python ddt数据驱动最简实例代码
2019/02/22 Python
用Anaconda安装本地python包的方法及路径问题(图文)
2019/07/16 Python
Python 2种方法求某个范围内的所有素数(质数)
2020/01/31 Python
Python3与fastdfs分布式文件系统如何实现交互
2020/06/23 Python
解决导入django_filters不成功问题No module named 'django_filter'
2020/07/15 Python
python如何使用腾讯云发送短信
2020/09/17 Python
英国排名第一的LED灯泡网站:LED Bulbs
2019/09/03 全球购物
综合素质的自我鉴定
2013/10/07 职场文书
楼面经理岗位职责范本
2014/02/18 职场文书
优秀党员学习焦裕禄精神思想汇报范文
2014/09/10 职场文书
2014年实习班主任工作总结
2014/11/08 职场文书
2015年幼儿园班主任个人工作总结
2015/10/22 职场文书
Python djanjo之csrf防跨站攻击实验过程
2021/05/14 Python
Vue实现跑马灯样式文字横向滚动
2021/11/23 Vue.js