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 相关文章推荐
php GeoIP的使用教程
Mar 09 PHP
php的memcached客户端memcached
Jun 14 PHP
关于PHP二进制流 逐bit的低位在前算法(详解)
Jun 13 PHP
如何使用php判断所处服务器操作系统的类型
Jun 20 PHP
php递归创建目录的方法
Feb 02 PHP
php实现的IMEI限制的短信验证码发送类
May 05 PHP
基于ThinkPHP实现批量删除
Dec 18 PHP
使用ThinkPHP的自动完成实现无限级分类实例详解
Sep 02 PHP
yii2中dropDownList实现二级和三级联动写法
Apr 26 PHP
php实现微信企业号支付个人的方法详解
Jul 26 PHP
PHP实现支持CURL字符串证书传输的方法
Mar 23 PHP
PHP网页缓存技术优点及代码实例
Jul 29 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/03 新手入门
php 上传功能实例代码
2010/04/13 PHP
通过chrome浏览器控制台(Console)进行PHP Debug的方法
2016/10/19 PHP
解析window.open的使用方法总结
2013/06/19 Javascript
javascript实现yield的方法
2013/11/06 Javascript
Javscript删除数组中指定元素并返回新数组
2014/03/06 Javascript
JS实现自动变换的菜单效果代码
2015/09/09 Javascript
如何利用AngularJS打造一款简单Web应用
2015/12/05 Javascript
jQuery 插件封装的方法
2016/11/16 Javascript
JavaScript仿聊天室聊天记录
2016/12/27 Javascript
深入理解vuex2.0 之 modules
2017/11/20 Javascript
微信小程序用户自定义模版用法实例分析
2017/11/28 Javascript
在 Angular中 使用 Lodash 的方法
2018/02/11 Javascript
Angular父组件调用子组件的方法
2018/04/02 Javascript
Node.js中你不可不精的Stream(流)
2018/06/08 Javascript
VUE实现自身整体组件销毁的示例代码
2020/01/13 Javascript
使用js实现单链解决前端队列问题的方法
2020/02/03 Javascript
[40:50]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第四场
2014/05/24 DOTA
[01:02:07]Liquid vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python 字典(dict)遍历的四种方法性能测试报告
2014/06/25 Python
详解Python中的变量及其命名和打印
2016/03/11 Python
详解Python函数作用域的LEGB顺序
2016/05/14 Python
关于python写入文件自动换行的问题
2018/06/23 Python
python3 读取Excel表格中的数据
2018/10/16 Python
对Python 语音识别框架详解
2018/12/24 Python
numpy linalg模块的具体使用方法
2019/05/26 Python
python判断自身是否正在运行的方法
2019/08/08 Python
Windows下pycharm创建Django 项目(虚拟环境)过程解析
2019/09/16 Python
anaconda3安装及jupyter环境配置全教程
2020/08/24 Python
详解CSS3中的box-sizing(content-box与border-box)
2019/04/19 HTML / CSS
英国最红的高街时尚品牌:Topshop
2016/08/05 全球购物
意大利会呼吸的鞋:Geox健乐士
2017/02/12 全球购物
法国在线药房:DoctiPharma
2020/10/21 全球购物
优秀语文教师事迹
2014/05/18 职场文书
2015年度工程师评职称工作总结
2015/10/14 职场文书
初中班级口号霸气押韵
2015/12/24 职场文书