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 输出双引号&quot;与单引号'的方法
May 09 PHP
php debug 安装技巧
Apr 30 PHP
PHP编码规范的深入探讨
Jun 06 PHP
ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单
May 15 PHP
ThinkPHP3.1的Widget新用法
Jun 19 PHP
2个比较经典的PHP加密解密函数分享
Jul 01 PHP
php获取网页里所有图片并存入数组的方法
Apr 06 PHP
PHP文件生成的图片无法使用CDN缓存的解决方法
Jun 20 PHP
php多线程实现方法及用法实例详解
Oct 26 PHP
PHP将MySQL的查询结果转换为数组并用where拼接的示例
May 13 PHP
PHP设计模式(五)适配器模式Adapter实例详解【结构型】
May 02 PHP
一次项目中Thinkphp绕过禁用函数的实战记录
Nov 17 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+ajax实现图片文件上传功能实例
2014/06/17 PHP
yii2.0整合阿里云oss上传单个文件的示例
2017/09/19 PHP
使用tp框架和SQL语句查询数据表中的某字段包含某值
2019/10/18 PHP
JavaScript性能陷阱小结(附实例说明)
2010/12/28 Javascript
javascript中对Attr(dom中属性)的操作示例讲解
2013/12/02 Javascript
JavaScript阻止事件冒泡示例分享
2014/12/28 Javascript
详解jQuery Mobile自定义标签
2016/01/06 Javascript
JavaScript代码因逗号不规范导致IE不兼容的问题
2016/02/25 Javascript
nodejs个人博客开发第五步 分配数据
2017/04/12 NodeJs
Vue结合SignalR实现前后端实时消息同步
2017/09/19 Javascript
JS实现的ajax和同源策略(实例讲解)
2017/12/01 Javascript
vue-router路由懒加载和权限控制详解
2017/12/13 Javascript
Vue源码解读之Component组件注册的实现
2018/08/24 Javascript
详解基于element的区间选择组件校验(交易金额)
2021/01/07 Javascript
使用Python对Csv文件操作实例代码
2017/05/12 Python
Python 字符串与二进制串的相互转换示例
2018/07/23 Python
解决tensorflow测试模型时NotFoundError错误的问题
2018/07/27 Python
Python图像处理之简单画板实现方法示例
2018/08/30 Python
pandas 将索引值相加的方法
2018/11/15 Python
通过python的matplotlib包将Tensorflow数据进行可视化的方法
2019/01/09 Python
Python从列表推导到zip()函数的5种技巧总结
2019/10/23 Python
Python 窗体(tkinter)下拉列表框(Combobox)实例
2020/03/04 Python
django 读取图片到页面实例
2020/03/27 Python
OpenCV4.1.0+VS2017环境配置的方法步骤
2020/07/09 Python
中国医药集团国药在线:国药网
2017/02/06 全球购物
客户代表实习人员自我鉴定
2013/09/27 职场文书
有关打架的检讨书
2014/01/25 职场文书
生产厂长岗位职责
2014/02/21 职场文书
2014年元旦促销活动方案
2014/02/22 职场文书
自主招生教师推荐信
2014/05/10 职场文书
2014党员学习兰辉先进事迹思想汇报
2014/09/17 职场文书
2015年团支书工作总结
2015/04/03 职场文书
小学入学感言
2015/08/01 职场文书
庭外和解协议书
2016/03/23 职场文书
七个Python必备的GUI库
2021/04/27 Python
nginx安装以及配置的详细过程记录
2021/09/15 Servers