Пример #1
0
 /**
  * 查询指定数据表的记录总数
  */
 protected function _queryCount($table_name)
 {
     $prefix = $this->_conn->getTablePrefix();
     $sql = "SELECT COUNT(*) FROM {$prefix}{$table_name}";
     return intval($this->_conn->getOne($sql));
 }
Пример #2
0
 /**
  * 获得分页信息
  *
  * 要使用该方法,必须先用 limitPage() 指定有效的分页参数。
  *
  * 该方法返回一个数组,包含下列信息:
  *
  * record_count: 符合查询条件的记录数
  * page_count: 按照页大小计算出来的总页数
  * first: 第一页的索引,等同于 limitPage() 的 $base 参数,默认为 1
  * last: 最后一页的索引
  * current: 当前页的索引
  * next: 下一页的索引
  * prev: 上一页的索引
  * page_size: 页大小
  * page_base: 页码基数(也就是第一页的索引值,默认为 1)
  *
  * 获得这个数组后,就可以通过 WebControls 或者其他途径构造分页导航条等用户界面内容。
  *
  * @return array
  */
 function getPagination()
 {
     $this->_query_params[self::PAGED_QUERY] = true;
     if (!empty($this->_parts[self::ORDER])) {
         $order = $this->_parts[self::ORDER];
         unset($this->_parts[self::ORDER]);
     }
     $count = (int) $this->_conn->getOne($this->__toString());
     $this->_query_params[self::PAGED_QUERY] = false;
     if (isset($order)) {
         $this->_parts[self::ORDER] = $order;
     }
     $pagination = array();
     $pagination['record_count'] = $count;
     $pagination['page_count'] = ceil($count / $this->_query_params[self::PAGE_SIZE]);
     $pagination['first'] = $this->_query_params[self::PAGE_BASE];
     $pagination['last'] = $pagination['page_count'] + $this->_query_params[self::PAGE_BASE] - 1;
     if ($pagination['last'] < $pagination['first']) {
         $pagination['last'] = $pagination['first'];
     }
     $page = $this->_query_params[self::CURRENT_PAGE];
     if ($page >= $pagination['page_count'] + $this->_query_params[self::PAGE_BASE]) {
         $page = $pagination['last'];
     }
     if ($page < $this->_query_params[self::PAGE_BASE]) {
         $page = $pagination['first'];
     }
     if ($page < $pagination['last'] - 1) {
         $pagination['next'] = $page + 1;
     } else {
         $pagination['next'] = $pagination['last'];
     }
     if ($page > $this->_query_params[self::PAGE_BASE]) {
         $pagination['prev'] = $page - 1;
     } else {
         $pagination['prev'] = $pagination['first'];
     }
     $pagination['current'] = $this->_query_params[self::CURRENT_PAGE] = $page;
     $pagination['page_size'] = $this->_query_params[self::PAGE_SIZE];
     $pagination['page_base'] = $this->_query_params[self::PAGE_BASE];
     return $pagination;
 }