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 5.0对象模型深度探索之类的静态成员
Mar 27 PHP
PHP操作XML作为数据库的类
Dec 19 PHP
通过JavaScript或PHP检测Android设备的代码
Mar 09 PHP
php类常量的使用详解
Jun 08 PHP
PHP header()函数常用方法总结
Apr 11 PHP
让CodeIgniter的ellipsize()支持中文截断的方法
Jun 12 PHP
PHP生成网站桌面快捷方式代码分享
Oct 11 PHP
php使用curl打开https网站的方法
Jun 17 PHP
在WordPress的后台中添加顶级菜单和子菜单的函数详解
Jan 11 PHP
浅谈PHP链表数据结构(单链表)
Jun 08 PHP
PHP Class SoapClient not found解决方法
Jan 20 PHP
Laravel 5+ .env环境配置文件详解
Apr 06 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中目录,文件操作详谈
2007/03/19 PHP
Cakephp 执行主要流程
2010/03/24 PHP
php中判断文件存在是用file_exists还是is_file的整理
2012/09/12 PHP
php实现模拟登陆方正教务系统抓取课表
2015/05/19 PHP
JavaScript 原型与继承说明
2010/06/09 Javascript
jQuery中add实现同时选择两个id对象
2010/10/22 Javascript
解析dom中的children对象数组元素firstChild,lastChild的使用
2013/07/10 Javascript
轻松实现jQuery添加删除按钮Click事件
2017/03/13 Javascript
jQuery动态追加页面数据以及事件委托详解
2017/05/06 jQuery
纯javascript前端实现base64图片下载(兼容IE10+)
2018/09/14 Javascript
vue-router权限控制(简单方式)
2018/10/29 Javascript
js实现多个倒计时并行 js拼团倒计时
2019/02/25 Javascript
vue使用混入定义全局变量、函数、筛选器的实例代码
2019/07/29 Javascript
QML实现圆环颜色选择器
2019/09/25 Javascript
python实现进程间通信简单实例
2014/07/23 Python
Python的Flask框架中实现简单的登录功能的教程
2015/04/20 Python
使用Python的urllib2模块处理url和图片的技巧两则
2016/02/18 Python
Python创建对称矩阵的方法示例【基于numpy模块】
2017/10/12 Python
Python模块WSGI使用详解
2018/02/02 Python
python下解压缩zip文件并删除文件的实例
2018/04/24 Python
基于python的图片修复程序(实现水印去除)
2018/06/04 Python
Django 实现图片上传和显示过程详解
2019/07/18 Python
详解python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
2019/08/27 Python
Python 列表中的修改、添加和删除元素的实现
2020/06/11 Python
浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack
2020/06/23 Python
Html5中的桌面通知Notification的实现
2018/09/25 HTML / CSS
微信html5页面调用第三方位置导航的示例
2018/03/14 HTML / CSS
html5中使用hotcss.js实现手机端自适配的方法
2020/04/23 HTML / CSS
FC-Moto瑞典:欧洲最大的摩托车服装和头盔商店之一
2018/11/27 全球购物
班组长安全职责
2014/01/05 职场文书
公务员转正考察材料
2014/02/07 职场文书
补充协议书范本
2014/04/23 职场文书
2014法院四风问题对照检查材料思想汇报
2014/10/04 职场文书
监察局领导班子四风问题整改措施思想汇报
2014/10/05 职场文书
为自己工作观后感
2015/06/11 职场文书
解析redis hash应用场景和常用命令
2021/08/04 Redis