通用分頁類(以Codeigniter測試)
page_list.php
複製代碼 代碼如下:
/**
* 分頁類
*/
class Page_list {
/**
* 總資料
* @var int
*/
private $total;
/**
* 每頁顯示資料
* @var int
*/
private $size;
/**
* 當前頁數
* @var int
*/
private $page;
/**
* 頁數列表左右頁數
* @var int
*/
private $len;
/**
* 總頁數
* @var int
*/
private $page_total;
/**
* 頁碼列表
* @var array
*/
private $page_list;
/**
* 基準地址
* @var string
*/
private $base_url;
/**
* 替換標誌
* @var string
*/
private $place;
/**
* 分頁樣式
* @var string
*/
private $style;
/**
* 建構函式
*
* @param array $config 配置數組
*/
public function __construct($config = array()){
// 初始化預設值
$this->total = 0;
$this->size = 20;
$this->page = 1;
$this->len = 4;
$this->page_total = 1;
$this->page_list = array();
$this->base_url = '?page=-page-';
$this->place = '-page-';
$this->style = $this->get_default_style();
$this->initialize($config);
}
/**
* 初始化分頁
*
* @param array $config 配置數組
*/
public function initialize($config = array()){
// 取得配置值
if(is_array($config)){
if(array_key_exists('total', $config)) $this->total = @intval($config['total']);
if(array_key_exists('size', $config)) $this->size = @intval($config['size']);
if(array_key_exists('page', $config)) $this->page = @intval($config['page']);
if(array_key_exists('len', $config)) $this->len = @intval($config['len']);
if(array_key_exists('base_url', $config)) $this->base_url = @strval($config['base_url']);
if(array_key_exists('place', $config)) $this->place = @strval($config['place']);
if(array_key_exists('style', $config)) $this->style = @strval($config['style']);
}
// 修正值
if($this->total<0) $this->total = 0;
if($this->size<=0) $this->size = 20;
if($this->page<=0) $this->page = 1;
if($this->len<=0) $this->len = 4;
// 執行分頁演算法
$this->page_total = ceil($this->total/$this->size);
if($this->page_total<=0) $this->page_total = 1;
if($this->page>$this->page_total) $this->page = $this->page_total;
if($this->page-$this->len>=1){
for($i=$this->len; $i>0; $i--){
$this->page_list[] = $this->page - $i;
}
}else{
for($i=1; $i<$this->page; $i++){
$this->page_list[] = $i;
}
}
$this->page_list[] = $this->page;
if($this->page+$this->len<=$this->page_total){
for($i=1; $i<=$this->len; $i++){
$this->page_list[] = $this->page + $i;
}
}else{
for($i=$this->page+1; $i<=$this->page_total; $i++){
$this->page_list[] = $i;
}
}
}
/**
* 預設分頁樣式
*
* @return string
*/
public function get_default_style(){
$style = '';
return $style;
}
/**
* 是否是第一頁
*
* @return bool
*/
public function is_first_page(){
return $this->page == 1;
}
/**
* 擷取第一頁頁碼
*
* @return int
*/
public function get_first_page(){
return 1;
}
/**
* 是否是最後一頁
*
* @return bool
*/
public function is_last_page(){
return $this->page == $this->page_total;
}
/**
* 擷取最後一頁頁碼
*
* @return int
*/
public function get_last_page(){
return $this->page_total;
}
/**
* 是否存在上一頁
*
* @return bool
*/
public function has_prev_page(){
return $this->page > 1;
}
/**
* 是否存在下一頁
*
* @return bool
*/
public function has_next_page(){
return $this->page < $this->page_total;
}
/**
* 擷取上一頁頁碼
*
* @return int
*/
public function get_prev_page(){
return $this->has_prev_page() ? $this->page - 1 : $this->page;
}
/**
* 擷取下一頁頁碼
*
* @return int
*/
public function get_next_page(){
return $this->has_next_page() ? $this->page + 1 : $this->page;
}
/**
* 擷取當前頁頁碼
*
* @return int
*/
public function get_curr_page(){
return $this->page;
}
/**
* 擷取總資料數
*
* @return int
*/
public function get_total(){
return $this->total;
}
/**
* 擷取每頁顯示資料數
*
* @return int
*/
public function get_size(){
return $this->size;
}
/**
* 擷取總頁數
*
* @return int
*/
public function get_total_page(){
return $this->page_total;
}
/**
* 構建並返回分頁代碼
*
* @param string $base_url 基準地址
* @param string $place 替換標誌
* @param string $style 分頁樣式
* @return string 分頁HTML代碼
*/
public function display($base_url = '', $place = '', $style = ''){
if($base_url==='') $base_url = $this->base_url;
if($place==='') $place = $this->place;
if($style==='') $style = $this->style;
$str = $style.'';
if( ! $this->is_first_page()){
$str .= 'get_first_page(), $base_url).'">首頁';
}
if($this->has_prev_page()){
$str .= 'get_prev_page(), $base_url).'">上一頁';
}
foreach($this->page_list as $v){
if($v==$this->page){
$str .= '' . $v . '';
}else{
$str .= ''.$v.'';
}
}
if($this->has_next_page()){
$str .= 'get_next_page(), $base_url).'">下一頁';
}
if( ! $this->is_last_page()){
$str .= 'get_last_page(), $base_url).'">尾頁';
}
$str .= '';
return $str;
}
}
?>
/application/view/pagelist.php
複製代碼 代碼如下:
class Pagelist extends CI_Controller {
public function page(){
$this->load->helper('url');
$page = $this->input->get('page');
$page = @intval($page);
if($page<=0) $page = 1;
$this->load->library('page_list',array('total'=>10000,'size'=>16,'page'=>$page));
$pl = $this->page_list->display(site_url('pagelist/page/page/-page-'));
$this->load->view('pagelist', array('pl' => $pl));
}
}
?>
/application/view/pagelist.php
複製代碼 代碼如下:
分頁測試
http://www.bkjia.com/PHPjc/755840.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/755840.htmlTechArticle通用分頁類(以Codeigniter測試) page_list.php 複製代碼 代碼如下: ?php if( ! defined('BASEPATH')) die('No Access'); /** * 分頁類 */ class Page_list { /** * 總數...