数据分页

model类中提供了分页读取数据的方法,定义如下:

array page(mixed $where = null, string $fields = '*', string $order = null, string $page = 1, int $size = 20, array $data = array())
$where           
查询条件,支持PDO的预置符( :? :field
$fields             
查询字段,默认为所有字段
$order            
排序条件,如: id desc, published desc
$page             
当前页码
$size               
每页的数量
$data              
数组格式,如果$where中使用了预置符,$data中则是预置符要绑定的数据

在模板中也提供了一个用于显示分页导航的函数,定义如下:

string pages(int $total, int $page = 1, int $pagesize = 20, int $offset = 2, string $url = null, int $mode = false)
$total              
内容的总数
$page             
当前分页
$pagesize        
每页分页大小,在后台设置 = 》全局设置 = 》性能优化 = 》列表页每页信息数处进行设置
$offset            
偏移量,表示除第一页和最后一页外,当前页两端各显示多少个页码数
$url                            
分页所使用的 URL 规则,不指定则使用当前请求的 URL ,默认的规则在后台设置 = 》栏目设置界面中的进行设置。
$mode            
true 则将转换 URL 中的 & &amp

举例说明

下面是一个分页读取guestbook留言的一个具体应用

§   控制器方法

function page()
{
            $order = isset($_GET['orderby']) ? str_replace('|', ' ', $_GET['orderby']) : '`gid` DESC';
            $page = max((isset($_GET['page']) ? intval($_GET['page']) : 1), 1);
            $size = max((isset($_GET['pagesize']) ? intval($_GET['pagesize']) : $this->pagesize), 1);
            $data = $this->guestbook->ls($_GET, '*', $order, $page, $size);
            $total = $this->guestbook->total();
            echo $this->json->encode(array('data' =>$data, 'total' => $total));
}

§   数据模型方法

function ls($get, $fields, $order, $page, $size)
{
            $where = null;
            if(isset($get['status']) && $get['status'])
            {
                        switch($get['status'])
                        {
                                   case 1:
                                               $where[] = '`isview`=0';
                                               break;
                                   case 2:
                                               $where[] = "`reply` != ''";
                                               break;
                                   default:
                                               break;
                        }
            }
            if (isset($get['keywords']) && $get['keywords'])                       $where[] = where_keywords('title', $get['keywords']);
            if (isset($get['typeid']) && $get['typeid'])                                 $where[] = '`typeid`='.$get['typeid'];
            if (isset($get['published']) && $get['published'])                      $where[] = where_mintime('addtime', $get['published']);
            if (isset($get['unpublished']) && $get['unpublished'])   $where[] = where_maxtime('addtime', $get['unpublished']);
 
            if (is_array($where)) $where = implode(' AND ', $where);
            $this->where = $where;
            $data = $this->page($where, $fields, $order, $page, $size);
            return $data;
}
 
function total()
{
            return $this->count($this->where);
}

§   模版中显示分页导航

pages($total,$page,$pagesize,2,$urlrule);



Copyright ©2009 - 2014 CmsTop.Com.All rights reserved.
思拓合众