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 相关文章推荐
一个简单的自动发送邮件系统(三)
Oct 09 PHP
php批量缩放图片的代码[ini参数控制]
Feb 11 PHP
通过PHP修改Linux或Unix口令的方法分享
Jan 30 PHP
PHP清除字符串中所有无用标签的方法
Dec 01 PHP
thinkPHP学习笔记之安装配置篇
Mar 05 PHP
PHP file_get_contents函数读取远程数据超时的解决方法
May 13 PHP
php生成唯一数字id的方法汇总
Nov 18 PHP
Joomla调用系统自带编辑器的实现方法
May 05 PHP
php实现在新浪云中使用imagick生成缩略图并上传的方法
Sep 26 PHP
Laravel5.* 打印出执行的sql语句的方法
Jul 24 PHP
php7函数,声明,返回值等新特性介绍
May 25 PHP
laravel5使用freetds连接sql server的方法
Dec 07 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本地服务器分享
2013/02/19 PHP
深入PHP异步执行的详解
2013/06/03 PHP
php开启与关闭错误提示适用于没有修改php.ini的权限
2014/10/16 PHP
PHP中rename()函数的妙用讲解
2019/02/28 PHP
用Javascript 获取页面元素的位置的代码
2009/09/25 Javascript
javascript 异步页面查询实现代码(asp.net)
2010/05/26 Javascript
jquery异步循环获取功能实现代码
2010/09/19 Javascript
javascript 判断字符串是否包含某字符串及indexOf使用示例
2013/10/18 Javascript
JS嵌套函数调用上下文的问题解决
2014/03/26 Javascript
javascript高级选择器querySelector和querySelectorAll全面解析
2016/04/07 Javascript
JS日期对象简单操作(获取当前年份、星期、时间)
2016/10/26 Javascript
用file标签实现多图文件上传预览
2017/02/14 Javascript
Bootstrap 过渡效果Transition 模态框(Modal)
2017/03/17 Javascript
在 Node.js 中使用 async 函数的方法
2017/11/17 Javascript
JavaScript函数式编程(Functional Programming)箭头函数(Arrow functions)用法分析
2019/05/22 Javascript
nodejs读取图片返回给浏览器显示
2019/07/25 NodeJs
JavaScript随机数的组合问题案例分析
2020/05/16 Javascript
vue接口请求加密实例
2020/08/11 Javascript
跟老齐学Python之做一个小游戏
2014/09/28 Python
Python中的异常处理简明介绍
2015/04/13 Python
Android模拟器无法启动,报错:Cannot set up guest memory ‘android_arm’ Invalid argument的解决方法
2016/07/01 Python
python opencv 图像尺寸变换方法
2018/04/02 Python
Python实现判断给定列表是否有重复元素的方法
2018/04/11 Python
Python设计模式之桥接模式原理与用法实例分析
2019/01/10 Python
Python快速转换numpy数组中Nan和Inf的方法实例说明
2019/02/21 Python
Django框架视图层URL映射与反向解析实例分析
2019/07/29 Python
PyTorch实现AlexNet示例
2020/01/14 Python
Django 用户登陆访问限制实例 @login_required
2020/05/13 Python
python爬取豆瓣电影排行榜(requests)的示例代码
2021/02/18 Python
CSS3属性box-shadow使用详细教程
2012/01/21 HTML / CSS
香港草莓网:Strawberrynet香港
2019/05/10 全球购物
客服主管岗位职责
2013/12/13 职场文书
市场营销求职信范文
2014/02/21 职场文书
2015年元旦主持词开场白
2014/12/14 职场文书
追悼会答谢词范文
2015/09/29 职场文书
《勇者辞职不干了》上卷BD发售宣传CM公开
2022/04/08 日漫