获取分页类
ThinkPHP提供了数据分页的扩展类库Page,可以在 http://www.thinkphp.cn/extend/241.html 下载,或者下载官方的完整扩展包( http://www.thinkphp.cn/down/253.html )里面也已经包含分页扩展类了。把解压后的Page.class.php放入ThinkPHP/Extend/Library/ORG/Util/(如果没有请手动创建)目录下面。当然,扩展类库的位置其实比较随意,你也可以放入项目的类库目录下面,区别只是在于你导入路径的不同而已。
分页查询
分页类需要和查询相结合,我们可以使用ThinkPHP自带的limit方法或者page方法,目的就是为了获取当前分页的数据(也有先获取完整数据然后前端分页显示的方法,不在本文描述内容中,也不建议)。使用limit方法或者page方法是和数据库类型无关的。我们首先在数据库里面创建一个think_data数据表用于测试:
CREATE TABLE IF NOT EXISTS `think_data` ( `id` smallint(4) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL, `content` varchar(255) NOT NULL, `create_time` int(11) unsigned NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
复制代码
要使用分页查询,一般来说需要进行两次查询,即第一次查询得到满足条件的总数据量,然后第二次查询当前分页的数据,这样做的作用是告诉分页类当前的数据总数,以便计算生成的总页数(如果你的显示只是需要上下翻页的话,其实总数查询可以省略或者进行缓存)。
一个标准的分页使用示例如下:
$Data = M('Data'); // 实例化Data数据对象 import('ORG.Util.Page');// 导入分页类 $count = $Data->where($map)->count();// 查询满足要求的总记录数 $map表示查询条件 $Page = new Page($count);// 实例化分页类 传入总记录数 $show = $Page->show();// 分页显示输出 // 进行分页数据查询 $list = $Data->where($map)->order('create_time')->limit($Page->firstRow.','.$Page->listRows)->select(); $this->assign('list',$list);// 赋值数据集 $this->assign('page',$show);// 赋值分页输出 $this->display(); // 输出模板
复制代码
如果没有任何数据的话,分页显示为空白。所以在进行测试之前,请确保你的数据表里面有一定的数据,否则可能看不到分页的效果。如果使用page方法查询的话,则可以改成
$Data = M('Data'); // 实例化Data数据对象 import('ORG.Util.Page');// 导入分页类 $count = $Data->where($map)->count();// 查询满足要求的总记录数 $Page = new Page($count);// 实例化分页类 传入总记录数 // 进行分页数据查询 注意page方法的参数的前面部分是当前的页数使用 $_GET[p]获取 $nowPage = isset($_GET['p'])?$_GET['p']:1; $list = $Data->where($map)->order('create_time')->page($nowPage.','.$Page->listRows)->select(); $show = $Page->show();// 分页显示输出 $this->assign('page',$show);// 赋值分页输出 $this->assign('list',$list);// 赋值数据集 $this->display(); // 输出模板
复制代码
然后,我们在模板中添加分页输出变量即可
[ {$vo.create_time|date='Y-m-d H:i:s',###} ] {$vo.title} |
复制代码
可以看到分页输出只需要采用{$page}变量在模板中输出即可。
分页设置
设置分页变量
默认情况下,分页传值的变量是p,生成的分页跳转地址可能类似于:- http://serverName/index.php/Data/index/p/1
- http://serverName/index.php/Data/index/p/2
复制代码
我们可以配置VAR_PAGE配置参数来改变:
- 'VAR_PAGE'=>'page'
复制代码
则分页地址变成:
- http://serverName/index.php/Data/index/page/1
- http://serverName/index.php/Data/index/page/1
复制代码
设置每页记录数
默认的情况下,分页显示每页会显示20条数据,如果你希望改变每页显示的数据量的话,实例化分页类的时候可以传人第二个参数即可:- $Page = new Page($count,5);// 实例化分页类 传入总记录数并且每页显示5条记录
复制代码
由于查询方法中我们使用了$Page->listRows属性,所以无需更改,但如果你是直接在查询方法中使用数字请记得一起更改。
下面是官方的分页示例的显示效果:
传入分页条件
默认情况下,分页类会自动获取当前页面的POST(优先)或者GET变量作为分页跳转的传值,如果需要指定传入当前分页跳转的参数,就可以通过设置parameter属性,parameter属性支持2种方式传值:字符串和数组。字符串采用var1=val1&var2=val2...的格式,例如:- foreach($map as $key=>$val) {
- $Page->parameter .= "$key=".urlencode($val).'&';
- }
复制代码
或者直接传入数组:
- $Page->parameter = array_map('urlencode',$map);
复制代码
由于内部调用了U函数,分页类最终生成的分页跳转链接会根据当前的URL设置自动生成和当前URL模式一致的地址,所以无需担心分页链接的参数影响URL地址。
分页路由支持
如果你的分页跳转链接地址采用了路由,那么可以通过设置url参数,例如,假设我们的分页URL地址格式是:- http://serverName/data/index/1
- http://serverName/data/index/2
- http://serverName/data/index/3
复制代码
这样的URL路由地址,那么我们就可以设置
- $Page->url = 'data/index';
复制代码
设置后,分页类的链接地址会自动生成上面的URL格式地址。
注意,url参数和parameter 同时使用的话,后者无效。
设置显示的页数
可以在实例化分页类之后,进行相关属性的设置。默认情况下,页面显示的页数是5,我们可以修改:- $Page->rollPage = 3;
复制代码
这样,页面上只能同时看到3个分页
分页显示定制
上面讲的是分页的参数设置,下面讲下如何对分页显示效果(包括样式)进行设置。默认的分页效果可能不能满足所有的要求,分页类提供了一个setConfig方法来修改默认的一些设置。例如:- $page->setConfig('header','个会员');
复制代码
setConfig方法支持的属性包括:
header | 头部描述信息,默认值 “条记录” |
prev | 上一页描述信息,默认值是“上一页” |
next | 下一页描述信息,默认值是“下一页” |
first | 第一页描述信息,默认值是“第一页” |
last | 最后一页描述信息,默认值是“最后一页” |
theme | 分页主题描述信息,包括了上面所有元素的组合 ,设置该属性可以改变分页的各个单元的显示位置,默认值是 "%totalRow% %header% %nowPage%/%totalPage% 页 %upPage% %downPage% %first% %prePage% %linkPage% %nextPage% %end%" |

thinkphp是国产框架。ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。

本篇文章给大家带来了关于thinkphp的相关知识,其中主要介绍了关于使用think-queue来实现普通队列和延迟队列的相关内容,think-queue是thinkphp官方提供的一个消息队列服务,下面一起来看一下,希望对大家有帮助。

thinkphp基于的mvc分别是指:1、m是model的缩写,表示模型,用于数据处理;2、v是view的缩写,表示视图,由View类和模板文件组成;3、c是controller的缩写,表示控制器,用于逻辑处理。mvc设计模式是一种编程思想,是一种将应用程序的逻辑层和表现层进行分离的方法。

本篇文章给大家带来了关于thinkphp的相关知识,其中主要介绍了使用jwt认证的问题,下面一起来看一下,希望对大家有帮助。

thinkphp扩展有:1、think-migration,是一种数据库迁移工具;2、think-orm,是一种ORM类库扩展;3、think-oracle,是一种Oracle驱动扩展;4、think-mongo,一种MongoDb扩展;5、think-soar,一种SQL语句优化扩展;6、porter,一种数据库管理工具;7、tp-jwt-auth,一个jwt身份验证扩展包。

thinkphp查询库是否存在的方法:1、打开相应的tp文件;2、通过“ $isTable=db()->query('SHOW TABLES LIKE '."'".$data['table_name']."'");if($isTable){...}else{...}”方式验证表是否存在即可。

本篇文章给大家带来了关于ThinkPHP的相关知识,其中主要整理了使用think-queue实现redis消息队列的相关问题,下面一起来看一下,希望对大家有帮助。

在thinkphp3.2中,可以利用define关闭调试模式,该标签用于变量和常量的定义,将入口文件中定义调试模式设为FALSE即可,语法为“define('APP_DEBUG', false);”;开启调试模式将参数值设置为true即可。


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Zend Studio 13.0.1
Powerful PHP integrated development environment

Atom editor mac version download
The most popular open source editor

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Dreamweaver Mac version
Visual web development tools
