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 4.2书写安全的脚本
Oct 09 PHP
shopex主机报错误请求解决方案(No such file or directory)
Dec 27 PHP
ThinkPHP表单自动提交验证实例教程
Jul 18 PHP
php+mysql实现数据库随机重排实例
Oct 17 PHP
PHP文件生成的图片无法使用CDN缓存的解决方法
Jun 20 PHP
PHP的命令行命令使用指南
Aug 18 PHP
php加密解密字符串示例
Oct 13 PHP
thinkphp 手机号和用户名同时登录
Jan 20 PHP
PHP 二维关联数组根据其中一个字段排序(推荐)
Apr 04 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
Jul 03 PHP
PHP实现动态压缩js与css文件的方法
May 02 PHP
php的instanceof和判断闭包Closure操作示例
Jan 26 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的历史和优缺点
2006/10/09 PHP
Laravel中的Blade模板引擎示例详解
2017/10/10 PHP
PHP getName()函数讲解
2019/02/03 PHP
用JQuery 实现的自定义对话框
2007/03/24 Javascript
用javascript实现的激活输入框后隐藏初始内容
2007/06/29 Javascript
解析javascript 实用函数的使用详解
2013/05/10 Javascript
jquery定时滑出可最小化的底部提示层特效代码
2013/10/02 Javascript
利用try-catch判断变量是已声明未声明还是未赋值
2014/03/12 Javascript
javascript中Math.random()使用详解
2015/04/15 Javascript
javascript实现可拖动变色并关闭层窗口实例
2015/05/15 Javascript
使用JavaScript实现连续滚动字幕效果的方法
2015/07/07 Javascript
JS实现选项卡实例详解
2015/11/17 Javascript
JS封装的自动创建表格的实现代码
2016/06/15 Javascript
JS中innerHTML和pasteHTML的区别实例分析
2016/06/22 Javascript
如何用js实现鼠标向上滚动时浮动导航
2016/07/18 Javascript
14 个折磨人的 JavaScript 面试题
2016/08/08 Javascript
AngularJS利用Controller完成URL跳转
2016/08/09 Javascript
详解vue-router 2.0 常用基础知识点之导航钩子
2017/05/10 Javascript
vue.js数据绑定的方法(单向、双向和一次性绑定)
2017/07/13 Javascript
AngularJS实现的2048小游戏功能【附源码下载】
2018/01/03 Javascript
vue实现固定位置显示功能
2019/05/30 Javascript
微信小程序实现手势滑动效果
2019/08/26 Javascript
vue 解决IOS10低版本白屏的问题
2020/11/17 Javascript
[00:27]DOTA2次级职业联赛 - Lilith战队宣传片
2014/12/01 DOTA
跟老齐学Python之有容乃大的list(4)
2014/09/28 Python
Python for Informatics 第11章之正则表达式(四)
2016/04/21 Python
K-近邻算法的python实现代码分享
2017/12/09 Python
解决python 无法加载downsample模型的问题
2018/10/25 Python
Python判断一个文件夹内哪些文件是图片的实例
2018/12/07 Python
非常震撼的纯CSS3人物行走动画
2016/02/24 HTML / CSS
使用 HTML5 Canvas 制作水波纹效果点击图片就会触发
2014/09/15 HTML / CSS
原生canvas制作画图小工具的踩坑和爬坑
2020/06/09 HTML / CSS
优质服务活动实施方案
2014/05/02 职场文书
奥巴马开学演讲稿
2014/05/15 职场文书
生产车间管理制度
2015/08/04 职场文书
python中的被动信息搜集
2021/04/29 Python