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.MVC的模板标签系统(三)
Sep 05 PHP
PHP 图片文件上传实现代码
Dec 29 PHP
php array_pop()数组函数将数组最后一个单元弹出(出栈)
Jul 12 PHP
php 多关键字 高亮显示实现代码
Apr 23 PHP
php中3des加密代码(完全与.net中的兼容)
Aug 02 PHP
php 解压rar文件及zip文件的方法
May 05 PHP
探寻PHP脚本不报错的原因
Jun 12 PHP
php操作(删除,提取,增加)zip文件方法详解
Mar 12 PHP
ThinkPHP框架安全实现分析
Mar 14 PHP
Laravel SQL语句记录方式(推荐)
May 26 PHP
laravel自定义分页效果
Jul 23 PHP
thinkPHP框架实现多表查询的方法
Jun 14 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
thinkPHP下的widget扩展用法实例分析
2015/12/26 PHP
thinkPHP5.0框架配置格式、加载解析与读取方法
2017/03/17 PHP
PHP7 新增功能
2021/03/09 PHP
jquery ui 1.7 ui.tabs 动态添加与关闭(按钮关闭+双击关闭)
2010/04/01 Javascript
jquery实现商品拖动选择效果代码(自写)
2013/05/28 Javascript
jquery 检测元素是否存在的实例代码
2013/11/19 Javascript
JS实现点击链接取消跳转效果的方法
2014/01/24 Javascript
jQuery判断元素上是否绑定了指定事件的方法
2015/03/17 Javascript
20分钟成功编写bootstrap响应式页面 就这么简单
2016/05/12 Javascript
javascript之Boolean类型对象
2016/06/07 Javascript
页面间固定参数,通过cookie传值的实现方法
2017/05/31 Javascript
Vue组件模板形式实现对象数组数据循环为树形结构(实例代码)
2017/07/31 Javascript
JSON创建键值对(key是中文或者数字)方式详解
2017/08/24 Javascript
vue实现用户长时间不操作自动退出登录功能的实现代码
2020/07/23 Javascript
Vue实现简单的拖拽效果
2020/08/25 Javascript
在 Python 应用中使用 MongoDB的方法
2017/01/05 Python
Python分治法定义与应用实例详解
2017/07/28 Python
Python基础学习之常见的内建函数整理
2017/09/06 Python
python脚本作为Windows服务启动代码详解
2018/02/11 Python
[原创]Python入门教程3. 列表基本操作【定义、运算、常用函数】
2018/10/30 Python
Python3爬虫学习入门教程
2018/12/11 Python
Python实现深度遍历和广度遍历的方法
2019/01/22 Python
scrapy-redis源码分析之发送POST请求详解
2019/05/15 Python
python中单下划线(_)和双下划线(__)的特殊用法
2019/08/29 Python
python无序链表删除重复项的方法
2020/01/17 Python
jupyter notebook中新建cell的方法与快捷键操作
2020/04/22 Python
教你如何用python操作摄像头以及对视频流的处理
2020/10/12 Python
世界上最全面的汽车零部件和配件集合:JC Whitney
2016/09/04 全球购物
美国宠物商店:Wag.com
2016/10/25 全球购物
很酷的小工具和电子产品商城:GearBest
2016/11/19 全球购物
JAVA的事件委托机制和垃圾回收机制
2014/09/07 面试题
酒店司机岗位职责
2013/12/14 职场文书
工地资料员岗位职责
2013/12/31 职场文书
入股协议书范本
2014/11/01 职场文书
学生个人总结范文
2015/02/15 职场文书
清洁员岗位职责
2015/02/15 职场文书