Pager 分页函数
- /**
- * 构造函数
- *
- * 如果 $source 参数是一个 TableDataGateway 对象,则 FLEA_Helper_Pager 会调用
- * 该 TDG 对象的 findCount() 和 findAll() 来确定记录总数并返回记录集。
- *
- * 如果 $source 参数是一个字符串,则假定为 SQL 语句。这时,FLEA_Helper_Pager
- * 不会自动调用计算各项分页参数。必须通过 setCount() 方法来设置作为分页计算
- * 基础的记录总数。
- *
- * 同时,如果 $source 参数为一个字符串,则不需要 $conditions 和 $sortby 参数。
- * 而且可以通过 setDBO() 方法设置要使用的数据库访问对象。否则 FLEA_Helper_Pager
- * 将尝试获取一个默认的数据库访问对象。
- *
- * @param TableDataGateway|string $source
- * @param int $currentPage
- * @param int $pageSize
- * @param mixed $conditions
- * @param string $sortby
- * @param int $basePageIndex
- *
- * @return FLEA_Helper_Pager
- */
- function FLEA_Helper_Pager(& $source, $currentPage, $pageSize = 20, $conditions = null, $sortby = null, $basePageIndex = 0)
- {
- $this->_basePageIndex = $basePageIndex;
- $this->_currentPage = $this->currentPage = $currentPage;
- $this->pageSize = $pageSize;
- if (is_object($source)) {
- $this->source =& $source;
- $this->_conditions = $conditions;
- $this->_sortby = $sortby;
- $this->totalCount = $this->count = (int)$this->source->findCount($conditions);
- $this->computingPage();
- } elseif (!emptyempty($source)) {
- $this->source = $source;
- $sql = "SELECT COUNT(*) FROM ( $source ) as _count_table";
- $this->dbo =& FLEA::getDBO();
- $this->totalCount = $this->count = (int)$this->dbo->getOne($sql);
- $this->computingPage();
- }
- }
Pager 参数说明
$source 数据库操作类
$currentPage 当前页
$pageSize 每页显示记录数量
$conditions 查询条件
$sortby 排序方式
$basePageIndex 页码基数
实例:
- $dirname = dirname(__FILE__);
- define('APP_DIR', $dirname . '/APP');
- define('NO_LEGACY_FLEAPHP', true);
- require($dirname.'/FleaPHP/FLEA/FLEA.php');
- //设置缓存目录
- FLEA::setAppInf('internalCacheDir',$dirname.'/_Cache');
- //链接数据库
- $dsn = array(
- 'driver' => 'mysql',
- 'host' => 'localhost',
- 'login' => 'root',
- 'password' => '',
- 'database' => 'wordpress'
- );
- FLEA::setAppInf('dbDSN',$dsn);
- //读取wp_posts的内容
- FLEA::loadClass('FLEA_Db_TableDataGateway');
- FLEA::loadClass('FLEA_Helper_Pager');
- $page_size='10'; //每页记录数
$page = (isset($_GET['page']))?(int)$_GET['page']:1;
$conditions = array(
'ss_state'=>0,
);
$pager = new FLEA_Helper_Pager($this->_shuoshuo,$page,$page_size,$conditions,'created DESC',1);
$rows =$pager->findAll();
$pager->setBasePageIndex(1); // 起始页码设为1
$this->smarty->assign('rowset',$rows);
$this->smarty->assign('newsNavbar', $pager->getNavbarIndexs($page, 8));
$this->smarty->assign('newsPager', $pager->getPagerData());
$url = array('ctl'=>'default','act'=>'helpinfo&act=shuoshuo');
$this->smarty->assign('url',$url);
<a href="{{url controller=$url.ctl action=$url.act page=$newsPager.firstPageNumber}}" title='首页'><<</a>{{section name=page loop=$newsNavbar}}{{if $newsNavbar[page].index == $newsPager.currentPage}}<b><font color='red'>[{{$newsNavbar[page].number}}]</font></b>{{else}}<a href="{{url controller=$url.ctl action=$url.act page=$newsNavbar[page].index}}">{{$newsNavbar[page].number}}</a>{{/if}}{{/section}}<a href="{{url controller=$url.ctl action=$url.act page=$newsPager.lastPageNumber}}" title='末页'>>></a><!-- 共有 <font color="Red">{{$newsPager.count}}</font> 条记录,分为 <font color="Red">{{$newsPager.pageCount}}</font> 页显示,每页 <font color="Red">{{$newsPager.pageSize}}</font> 条-->