/** * 查询指定数据表的记录总数 */ protected function _queryCount($table_name) { $prefix = $this->_conn->getTablePrefix(); $sql = "SELECT COUNT(*) FROM {$prefix}{$table_name}"; return intval($this->_conn->getOne($sql)); }
/** * 获得分页信息 * * 要使用该方法,必须先用 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; }