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 相关文章推荐
使用adodb lite解决问题
Dec 31 PHP
php数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系
Nov 02 PHP
php实现utf-8和GB2312编码相互转换函数代码
Feb 07 PHP
codeigniter集成ucenter1.6双向通信的解决办法
Jun 12 PHP
兼容PHP和Java的des加密解密代码分享
Jun 26 PHP
使用PHP实现下载CSS文件中的图片
Dec 06 PHP
分析PHP中单双引号的误区和双引号小隐患
Jul 19 PHP
Yii框架数据模型的验证规则rules()被执行的方法
Dec 02 PHP
php array_reverse 以相反的顺序返回数组实例代码
Apr 11 PHP
PHP PDOStatement::fetchColumn讲解
Jan 31 PHP
PHP创建XML接口示例
Jul 04 PHP
Laravel6.0.4中将添加计划任务事件的方法步骤
Oct 15 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
php实现斐波那契数列的简单写法
2014/07/19 PHP
PHP对象递归引用造成内存泄漏分析
2014/08/28 PHP
Mac系统下使用brew搭建PHP(LNMP/LAMP)开发环境
2015/03/03 PHP
PHP DB 数据库连接类定义与用法示例
2019/03/11 PHP
PHP实现的策略模式示例
2019/03/20 PHP
通用javascript脚本函数库 方便开发
2009/10/13 Javascript
html dom节点操作(获取/修改/添加或删除)
2014/01/23 Javascript
javascript随机抽取0-100之间不重复的10个数
2016/02/25 Javascript
JS表单验证方法实例小结【电话、身份证号、Email、中文、特殊字符、身份证号等】
2017/02/14 Javascript
vue动态生成dom并且自动绑定事件
2017/04/19 Javascript
JavaScript无操作后屏保功能的实现方法
2017/07/04 Javascript
vue-cli项目中怎么使用mock数据
2017/09/27 Javascript
微信小程序实现文字跑马灯效果
2020/05/26 Javascript
构建一个JavaScript插件系统
2020/10/20 Javascript
微信小程序实现页面监听自定义组件的触发事件
2020/11/01 Javascript
将Django使用的数据库从MySQL迁移到PostgreSQL的教程
2015/04/11 Python
Python中装饰器学习总结
2018/02/10 Python
Python pyinotify日志监控系统处理日志的方法
2018/03/08 Python
基于python实现学生管理系统
2018/10/17 Python
详解用python自制微信机器人,定时发送天气预报
2019/03/25 Python
python mac下安装虚拟环境的图文教程
2019/04/12 Python
Python OpenCV 调用摄像头并截图保存功能的实现代码
2019/07/02 Python
python 字段拆分详解
2019/12/17 Python
使用 Python 处理3万多条数据只要几秒钟
2020/01/19 Python
OpenCV+python实现实时目标检测功能
2020/06/24 Python
Python变量及数据类型用法原理汇总
2020/08/06 Python
Python3+selenium配置常见报错解决方案
2020/08/28 Python
日本最大的眼镜购物网站:Oh My Glasses
2016/11/13 全球购物
德国网上药房:Apotal
2017/04/04 全球购物
Sisley法国希思黎美国官方网站:享誉全球的奢华植物美容品牌
2020/06/27 全球购物
特教教师先进事迹
2014/05/21 职场文书
社区科普工作方案
2014/06/03 职场文书
公司门卫岗位职责范本
2014/07/08 职场文书
医者仁心观后感
2015/06/17 职场文书
如何书写先进事迹材料?
2019/07/02 职场文书
浅谈Redis中的RDB快照
2021/06/29 Redis