不是很喜欢TP的分页类,因为生成的分页url感觉有点不好理解,例如访问路径xxxx/home/show.html,在模板输出分页后,例如产生了页码,页码链接的路径会变成xxxx/home/show/p/页码.html。本人不是很喜欢这种路径,不过也无关大雅。用久了就好了。
$sql = " SELECT f.*,d.dname,FROM_UNIXTIME(f.createtime,'%Y-%m-%d') createdate, " ." FROM_UNIXTIME(f.updatetime,'%Y-%m-%d') updatedate "
." FROM ".C('DB_PREFIX')."file f LEFT JOIN ".C('DB_PREFIX')."dir d ON f.did = d.did where 1=1 ";
if(!empty($post['filename'])){
$sql .= " and f.filename like '%".$post['filename']."%' ";
}
if(!empty($post['did'])){
$sql .= " and f.did='".$post['did']."' ";
}
//$result = $file->query($sql);
$count = count($file->query($sql));
$page = new \Think\Page($count , PAGE_SIZE);
//$page->parameter = $post['did']; //此处的row是数组,为了传递查询条件
$page->setConfig('first','首页');
$page->setConfig('prev','上一页');
$page->setConfig('next','下一页');
$page->setConfig('last','尾页');
$page -> setConfig('header','<span class="rows">共<b>%TOTAL_ROW%</b>条记录 第<b>%NOW_PAGE%</b>页/共<b>%TOTAL_PAGE%</b>页</span>');
$page -> setConfig('theme','%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END% %HEADER% ');
$show = $page->show();
$sql .= " LIMIT ".$page->firstRow.",".$page->listRows;
$result = $file->query($sql);
如上面代码,使用的是query方法查询自定义的sql,page初始化时需要传入2个参数,sql的数据总条数,分页条数;通过setConfig函数来进行相关的page对象定义,show方法产生分页的html,$pager提供了firestRow和lastRows这2个属性来支持分页,可以通过拼接sql或者model提供的limit()函数来进行分页查询。