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 相关文章推荐
java EJB 加密与解密原理的一个例子
Jan 11 PHP
ThinkPHP实现一键清除缓存方法
Jun 26 PHP
PHP中提问频率最高的11个面试题和答案
Sep 02 PHP
php通过正则表达式记取数据来读取xml的方法
Mar 09 PHP
一个PHP实现的轻量级简单爬虫
Jul 08 PHP
thinkphp3.x中session方法的用法分析
May 20 PHP
谈谈php对接芝麻信用踩的坑
Dec 01 PHP
基于PHP常用文件函数和目录函数整理
Aug 17 PHP
php实现的AES加密类定义与用法示例
Jan 29 PHP
PHP编程实现的TCP服务端和客户端功能示例
Apr 13 PHP
laravel 字段格式化 modle 字段类型转换方法
Sep 30 PHP
laravel实现查询最后执行的一条sql语句的方法
Oct 09 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开发文档 会员收费1期
2012/08/14 PHP
div li的多行多列 无刷新分页示例代码
2013/10/16 PHP
教你如何开启shopnc b2b2c 伪静态
2014/10/21 PHP
PHP检测字符串是否为UTF8编码的常用方法
2014/11/21 PHP
Yii Framework框架使用PHPExcel组件的方法示例
2019/07/24 PHP
JavaScript 判断浏览器类型及版本
2009/02/21 Javascript
JavaScript的parseInt 进制问题
2009/05/07 Javascript
jQuery 解析xml文件
2009/08/09 Javascript
Jquery中删除元素的实现代码
2011/12/29 Javascript
js操纵跨frame的三级联动select下拉选项实例介绍
2013/05/19 Javascript
解析JavaScript中delete操作符不能删除的对象
2013/12/03 Javascript
javascript中处理时间戳为日期格式的方法
2014/01/02 Javascript
ie9 提示'console' 未定义问题的解决方法
2014/03/20 Javascript
我的Node.js学习之路(四)--单元测试
2014/07/06 Javascript
jQuery模仿阿里云购买服务器选择购买时间长度的代码
2016/04/29 Javascript
浅析jQuery中使用$所引发的问题
2016/05/29 Javascript
jQuery复制节点用法示例(clone方法)
2016/09/08 Javascript
原生js轮播(仿慕课网)
2017/02/15 Javascript
JS组件系列之MVVM组件构建自己的Vue组件
2017/04/28 Javascript
vue一个页面实现音乐播放器的示例
2018/02/06 Javascript
jQuery实现的点击标题文字切换字体效果示例【测试可用】
2018/04/26 jQuery
使用js实现将后台传入的json数据放在前台显示
2018/08/06 Javascript
vue项目中引入Sass实例方法
2019/08/27 Javascript
在Webpack中用url-loader处理图片和字体的问题
2020/04/28 Javascript
vue3.0实现插件封装
2020/12/14 Vue.js
vue仿携程轮播图效果(滑动轮播,下方高度自适应)
2021/02/11 Vue.js
Python实现读取文件最后n行的方法
2017/02/23 Python
Python实现端口检测的方法
2018/07/24 Python
Python常用库Numpy进行矩阵运算详解
2020/07/21 Python
css3实现圆锥渐变conic-gradient效果
2020/02/12 HTML / CSS
客服端调用EJB对象的几个基本步骤
2012/01/15 面试题
建筑工程技术应届生求职信
2013/11/17 职场文书
2014年高二班主任工作总结
2014/12/16 职场文书
2015毕业寄语大全
2015/02/26 职场文书
2019财务毕业实习报告
2019/06/27 职场文书
Spring Boot 排除某个类加载注入IOC的操作
2021/08/02 Java/Android