thinkphp 分页类介绍

thinkphp 中的分页类在我看来还是很强大的,使用起来也是很方便的。只要传总的条数,和每页显示的条数,还有样式配置数组,你就可以轻松显示分页,而且可以方便的调整前台页数代码的样式。

下面介绍一下一些配置参数:

public $firstRow; // 起始行数

public $listRows; // 列表每页显示行数

public $parameter; // 分页跳转时要带的参数

public $totalRows; // 总行数

public $totalPages; // 分页总页面数

public $rollPage   = 11;// 分页栏每页显示的页数

public $lastSuffix = true; // 最后一页是否显示总页数

private $p       = ‘p‘; //分页参数名

private $url     = ‘‘; //当前链接URL

private $nowPage = 1;//默认第一页

我们一般新建对象的时候为:

$Page=new
\Think\Page($count,25);//
实例化分页类 传入总记录数和每页显示的记录数(25)

$show=
$Page->show();//
分页显示输出

$count 为总的页数,25为每页显示的记录数。

这里没有进行任何配置输出的效果也是默认的,我们可以进行一些调整,比如:

$Page->rollPage = 5,这样就最多显示5个分页数目,

$Page->lastSuffix=false;//这个参数是让他最后一页不显示总的数目。因为我们可以通过header来显示总的数目。

// 分页显示定制

private $config  = array(

‘header‘ => ‘<span class="rows">共 %TOTAL_ROW% 条记录</span>‘,

‘prev‘   => ‘<<‘,

‘next‘   => ‘>>‘,

‘first‘  => ‘1...‘,

‘last‘   => ‘...%TOTAL_PAGE%‘,

‘theme‘  => ‘%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END%‘,

);

这里是分页样式默认的数组,我们可以通过攒地新的值来覆盖它们,

通过

public function setConfig($name,$value) {

if(isset($this->config[$name])) {

$this->config[$name] = $value;

}

}

这个函数我们可以把这些默认覆盖,比如theme里面没有header的信息,我们可以加入%HEADER% 来让他显示出来。而header的内容也可以通过一个key为header的数组来覆盖。其他的参数都是类似的,说明一下,theme里面我们可以自己调整header的位置,而不是固定在前面或者后面,用起来很灵活。

下面说明一下,thinkphp这个分页类是如何通过配置文件来修改它的样式的。

$page_str = str_replace(

array(‘%HEADER%‘, ‘%NOW_PAGE%‘, ‘%UP_PAGE%‘, ‘%DOWN_PAGE%‘, ‘%FIRST%‘, ‘%LINK_PAGE%‘, ‘%END%‘, ‘%TOTAL_ROW%‘, ‘%TOTAL_PAGE%‘),

array($this->config[‘header‘], $this->nowPage, $up_page, $down_page, $the_first, $link_page, $the_end, $this->totalRows, $this->totalPages),

$this->config[‘theme‘]);

这个str_replace可以说是分页类的一个设计精华之处,首先前面将类的各个属性的值分开赋值,最后调用这个函数,读取config中的theme来表示要显示的内容,而其中的变量是通过按照对应的数组来替换的,就实现了将config中的theme(可以子集覆盖默认的theme)来控制如何显示分页及内容顺序。

最后就是thinkphp将常用的前一页,后一页,第一页,当前页都加了默认class,所以我们引入一个css文件就可以改变他的样式了。

时间: 2024-10-05 06:16:32

thinkphp 分页类介绍的相关文章

定制 ThinkPHP 分页类

第一步,引入: 1 import('ORG/Util/Page'); 2 $total = M('xxx')->count(); //获取总记录数 3 $page = new Page($total, 3); //实例化:(总数,每页显示的记录数) 4 5 $limit = $page->firstRow.','.$page->listRows; //用于SQL 的 limit 语句的限制字符串:'limit 0,12' 6 $result = M('xxx')->limit($l

thinkphp 分页类 url 编码处理

在做thinkphp分页的时候  thinkphp 中的分页 有一个小问题 就是 在有form 表单 搜索中文的时候,点击下一页的话 中文会被转换成编码. 如图: 最直接的方法就是 直接修改 thinkphp 分页类 的源代码.(反正改了也不会出现什么大问题~) 在 Page.class.php 文件中 show 方法里面 将 原来的代码注释掉,修改为新的. $this->url=U(ACTION_NAME).'?'.http_build_query($this->parameter); ok

ThinkPHP 分页类的使用及退出功能的实现

/* ThinkPHP设置编码统一: 一.数据库设置为utf8_bin 二.HTML页面设置charset=utf-8,而且检查文档编码格式是否是utf-8.phpDesigner8设置方式为“文件->文件编码->选中UTF-8 */ <?php /** 这是后台index控制器 */ Class IndexAction extends CommonAction{ public function index(){ $this->display(); } Public functio

Thinkphp分页类使用

3.2.2分页设置变化: $count = $pro->count(); //查询出总条数 $page=new \Think\Page($count,5); $page->rollPage = 5; //页面显示的页数,默认是5 $page->lastSuffix=false; //将最后一页显示总页数设置为false,下面的setConfig('last','尾页')才能生效 $page->setConfig('header','共%TOTAL_ROW%条');  //设置显示的

ThinkPHP分页类

第一种:利用Page类和limit方法 $User = M('User'); // 实例化User对象$count      = $User->where('status=1')->count(); // 查询满足要求的总记录数$Page       = new \Think\Page($count,25); // 实例化分页类 传入总记录数和每页显示的记录数(25)$show       = $Page->show();   // 分页显示输出 $list = $User->wh

ThinkPHP 分页中带入查询(搜索)条件

parameter 属性赋值 例如要检索用户表中状态为 1 (status=1) 并且电子包含 163 的用户,当提交表单时(注意表单是 GET 方式提交),形成的 URL 地址大致如下: http://www.5idev.com/index.php/Index/search/status/1/email/163 在搜索操作(search)中主要代码如下: public function search(){ $Dao = M("User"); // 构造查询条件 $condition[

thinkphp简洁、美观、靠谱的分页类

废话不多说先上图预览下:即本博客的分页: 这个分页类是在thinkphp框架内置的分页类的基础上修改而来: 原分页类的一些设计,在实际运用中感觉不是很方便: 1:只有一页内容时不显示分页: 2:原分页类在当前页是第一页和最后一页的时候,不显示第一页和最后一页的按钮: 3:分页数比较少时不显示首页和末页按钮: 4:包裹分页内容的父级div没有class: 针对以上问题逐一进行了修改成如下: 1:如果没有数据不显示分页,如果有一页及以上内容即显示分页: 2:默认就显示第一页和最后一页按钮,但是在当前

thinkphp自带分页类

thinkphp自带分页使用案例: $Data = M('Data'); // 实例化Data数据对象  date 是你的表名     import('ORG.Util.Page');// 导入分页类     $count = $Data->where($map)->count();// 查询满足要求的总记录数 $map表示查询条件     $Page = new Page($count);// 实例化分页类 传入总记录数     $show = $Page->show();// 分页显

thinkphp 原生sql使用分页类

public function index(){ import("@.ORG.Page"); //导入分页类 $Dao = M(); $count = count($Dao->query("SELECT * FROM ofuser WHERE uid IN (SELECT uid FROM ofid WHERE uid ='1')"));//总计条数 $Page = new Page($count, 10); //一页中的数量为5 $list = $Dao-&