codeigniter中測(cè)試通過(guò)的分頁(yè)類示例
通用分頁(yè)類(以Codeigniter測(cè)試)
page_list.php
<?php if( ! defined('BASEPATH')) die('No Access');
/**
* 分頁(yè)類
*/
class Page_list {
/**
* 總數(shù)據(jù)
* @var int
*/
private $total;
/**
* 每頁(yè)顯示數(shù)據(jù)
* @var int
*/
private $size;
/**
* 當(dāng)前頁(yè)數(shù)
* @var int
*/
private $page;
/**
* 頁(yè)數(shù)列表左右頁(yè)數(shù)
* @var int
*/
private $len;
/**
* 總頁(yè)數(shù)
* @var int
*/
private $page_total;
/**
* 頁(yè)碼列表
* @var array
*/
private $page_list;
/**
* 基準(zhǔn)地址
* @var string
*/
private $base_url;
/**
* 替換標(biāo)志
* @var string
*/
private $place;
/**
* 分頁(yè)樣式
* @var string
*/
private $style;
/**
* 構(gòu)造函數(shù)
*
* @param array $config 配置數(shù)組
*/
public function __construct($config = array()){
// 初始化默認(rèn)值
$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);
}
/**
* 初始化分頁(yè)
*
* @param array $config 配置數(shù)組
*/
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;
// 執(zhí)行分頁(yè)算法
$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;
}
}
}
/**
* 默認(rèn)分頁(yè)樣式
*
* @return string
*/
public function get_default_style(){
$style = '<style type="text/css">';
$style .= ' div.page_list { margin:0;padding:0;overflow:hidden;zoom:1;}';
$style .= ' div.page_list a {display:block;float:left;height:20px;line-height:21px; font-size:13px;font-weight:normal;font-style:normal;color:#133DB6;text-decoration:none;margin:0 3px;padding:0 7px;overflow;zoom:1;}';
$style .= ' div.page_list a.page_list_act { font-size:13px;padding:0 6px;}';
$style .= ' div.page_list a:link, div.page_list a:visited { background:#FFF;border:1px #EEE solid;text-decoration:none;}';
$style .= ' div.page_list a:hover, div.page_list a:active { background:#EEE;text-decoration:none;}';
$style .= ' div.page_list strong { display:block;float:left;height:20px;line-height:21px;font-size:13px;font-weight:bold;font-style:normal;color:#000;margin:0 3px;padding:0 8px;overflow:hidden;zoom:1;}';
$style .= ' </style>';
return $style;
}
/**
* 是否是第一頁(yè)
*
* @return bool
*/
public function is_first_page(){
return $this->page == 1;
}
/**
* 獲取第一頁(yè)頁(yè)碼
*
* @return int
*/
public function get_first_page(){
return 1;
}
/**
* 是否是最后一頁(yè)
*
* @return bool
*/
public function is_last_page(){
return $this->page == $this->page_total;
}
/**
* 獲取最后一頁(yè)頁(yè)碼
*
* @return int
*/
public function get_last_page(){
return $this->page_total;
}
/**
* 是否存在上一頁(yè)
*
* @return bool
*/
public function has_prev_page(){
return $this->page > 1;
}
/**
* 是否存在下一頁(yè)
*
* @return bool
*/
public function has_next_page(){
return $this->page < $this->page_total;
}
/**
* 獲取上一頁(yè)頁(yè)碼
*
* @return int
*/
public function get_prev_page(){
return $this->has_prev_page() ? $this->page - 1 : $this->page;
}
/**
* 獲取下一頁(yè)頁(yè)碼
*
* @return int
*/
public function get_next_page(){
return $this->has_next_page() ? $this->page + 1 : $this->page;
}
/**
* 獲取當(dāng)前頁(yè)頁(yè)碼
*
* @return int
*/
public function get_curr_page(){
return $this->page;
}
/**
* 獲取總數(shù)據(jù)數(shù)
*
* @return int
*/
public function get_total(){
return $this->total;
}
/**
* 獲取每頁(yè)顯示數(shù)據(jù)數(shù)
*
* @return int
*/
public function get_size(){
return $this->size;
}
/**
* 獲取總頁(yè)數(shù)
*
* @return int
*/
public function get_total_page(){
return $this->page_total;
}
/**
* 構(gòu)建并返回分頁(yè)代碼
*
* @param string $base_url 基準(zhǔn)地址
* @param string $place 替換標(biāo)志
* @param string $style 分頁(yè)樣式
* @return string 分頁(yè)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.'<div class="page_list">';
if( ! $this->is_first_page()){
$str .= '<a class="page_list_act" href="'.str_replace($place, $this->get_first_page(), $base_url).'">首頁(yè)</a>';
}
if($this->has_prev_page()){
$str .= '<a class="page_list_act" href="'.str_replace($place, $this->get_prev_page(), $base_url).'">上一頁(yè)</a>';
}
foreach($this->page_list as $v){
if($v==$this->page){
$str .= '<strong>' . $v . '</strong>';
}else{
$str .= '<a href="'.str_replace($place, $v, $base_url).'">'.$v.'</a>';
}
}
if($this->has_next_page()){
$str .= '<a class="page_list_act" href="'.str_replace($place, $this->get_next_page(), $base_url).'">下一頁(yè)</a>';
}
if( ! $this->is_last_page()){
$str .= '<a class="page_list_act" href="'.str_replace($place, $this->get_last_page(), $base_url).'">尾頁(yè)</a>';
}
$str .= '</div>';
return $str;
}
}
?>
/application/view/pagelist.php
<?php if( ! defined('BASEPATH')) die('No Access');
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
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>分頁(yè)測(cè)試</title>
</head>
<body>
<?php echo $pl; ?>
</body>
</html>
- CI框架常用經(jīng)典操作類總結(jié)(路由,偽靜態(tài),分頁(yè),session,驗(yàn)證碼等)
- CI框架(ajax分頁(yè),全選,反選,不選,批量刪除)完整代碼詳解
- Codeigniter(CI)框架分頁(yè)函數(shù)及相關(guān)知識(shí)
- PHP CodeIgniter分頁(yè)實(shí)例及多條件查詢解決方案(推薦)
- CodeIgniter分頁(yè)類pagination使用方法示例
- codeigniter實(shí)現(xiàn)get分頁(yè)的方法
- Codeigniter框架實(shí)現(xiàn)獲取分頁(yè)數(shù)據(jù)和總條數(shù)的方法
- CI框架簡(jiǎn)單分頁(yè)類用法示例
相關(guān)文章
ThinkPHP連接數(shù)據(jù)庫(kù)操作示例【基于DSN方式和數(shù)組傳參的方式】
這篇文章主要介紹了ThinkPHP連接數(shù)據(jù)庫(kù)操作,結(jié)合實(shí)例形式分析了thinkPHP基于DSN方式和數(shù)組傳參的方式進(jìn)行數(shù)據(jù)庫(kù)連接的實(shí)現(xiàn)步驟與屬性設(shè)置、控制器、模板使用等相關(guān)操作技巧,需要的朋友可以參考下2018-03-03php xml留言板 xml存儲(chǔ)數(shù)據(jù)的簡(jiǎn)單例子
php xml留言板 xml存儲(chǔ)數(shù)據(jù)的簡(jiǎn)單例子 php操作xml的簡(jiǎn)單留言板,帶分頁(yè),僅供參考2009-08-08PHP+AjaxForm異步帶進(jìn)度條上傳文件實(shí)例代碼
在使用ajaxForm方法之前,首先需要安裝form.js的插件,網(wǎng)上可以找到,下面通過(guò)本文重點(diǎn)給大家介紹PHP+AjaxForm異步帶進(jìn)度條上傳文件實(shí)例代碼,感興趣的朋友一起看看吧2017-08-08PHP中static關(guān)鍵字以及與self關(guān)鍵字的區(qū)別
這篇文章主要介紹了PHP中static關(guān)鍵字以及與self關(guān)鍵字的區(qū)別,本文講解了static關(guān)鍵字的定義、遲綁定(Late Static Bindings)、以及與self關(guān)鍵字的區(qū)別等內(nèi)容,需要的朋友可以參考下2015-07-07phpstorm動(dòng)態(tài)調(diào)試環(huán)境部署過(guò)程
這篇文章主要介紹了php代碼審計(jì)phpstorm動(dòng)態(tài)調(diào)試的過(guò)程,xdebug調(diào)試調(diào)試環(huán)境部署的操作過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04