用于ajax动态加载数据的分页类,分页事件可以动态添加,去除了a链接中的href地址。
代码如下
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: 麦当苗儿
// +----------------------------------------------------------------------
namespaceThink;
classcustomPage{
public$firstRow;// 起始行数
public$listRows;// 列表每页显示行数
public$parameter;// 分页跳转时要带的参数
public$totalRows;// 总行数
public$totalPages;// 分页总页面数
public$rollPage = 6;// 分页栏每页显示的页数
public$lastSuffix= true;// 最后一页是否显示总页数
private$p ='p'//分页参数名
private$url =''//当前链接URL
private$nowPage= 1;
// 分页显示定制
private$config=array(
'header'=>'共 %TOTAL_ROW% 条记录',
'prev' =>'上一页',
'next' =>'下一页',
'first'=>Ƈ...',
'last' =>'...%TOTAL_PAGE%',
'theme'=>'%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END%',
);
/**
* 架构函数
* @param array $totalRows 总的记录数
* @param array $listRows 每页显示记录数
* @param array $parameter 分页跳转的参数
*/
publicfunction__construct($totalRows,$listRows=20,$parameter=array()) {
C('VAR_PAGE') &&$this->p = C('VAR_PAGE');//设置分页参数名称
/* 基础设置 */
$this->totalRows =$totalRows;//设置总记录数
$this->listRows =$listRows;//设置每页显示行数
$this->parameter =empty($parameter) ?$_GET:$parameter;
$this->nowPage =empty($_GET[$this->p]) ? 1 :intval($_GET[$this->p]);
$this->totalPages =ceil($this->totalRows /$this->listRows);//总页数
if($this->nowPage>$this->totalPages) {
$this->nowPage =$this->totalPages ;
}
$this->nowPage =$this->nowPage>0 ?$this->nowPage : 1;
$this->firstRow =$this->listRows * ($this->nowPage - 1);
}
/**
* 定制分页链接设置
* @param string $name 设置名称
* @param string $value 设置值
*/
publicfunctionsetConfig($name,$value) {
if(isset($this->config[$name])) {
$this->config[$name] =$value;
}
}
/**
* 生成链接URL
* @param integer $page 页码
* @return string
*/
privatefunctionurl($page){
returnstr_replace(urlencode('[PAGE]'),$page,$this->url);
}
/**
* 组装分页链接
* @return string
*/
publicfunctionshow() {
if(0 ==$this->totalRows)return''
/* 生成URL */
$this->parameter[$this->p] ='[PAGE]'
$this->url = U(ACTION_NAME,$this->parameter);
/* 计算分页信息 */
if(!empty($this->totalPages) &&$this->nowPage >$this->totalPages) {
$this->nowPage =$this->totalPages;
}
/* 计算分页临时变量 */
$now_cool_page =$this->rollPage/2;
$now_cool_page_ceil=ceil($now_cool_page);
$this->lastSuffix &&$this->config['last'] =$this->totalPages;
//上一页
$up_row=$this->nowPage - 1;
$up_page=$up_row> 0 ?'上一页':''
//下一页
$down_row=$this->nowPage + 1;
$down_page= ($down_row<=$this->totalPages) ?'下一页':''
//第一页
$the_first=''
if($this->totalPages >$this->rollPage && ($this->nowPage -$now_cool_page) >= 1){
$the_first='第一页'
}
//最后一页
$the_end=''
//if($this->totalPages > $this->rollPage && ($this->nowPage + $now_cool_page) < $this->totalPages){
if($this->totalPages >$this->rollPage && ($this->nowPage +$now_cool_page) <$this->totalPages){
$the_end='totalRows.'" href="javascript:;" rel="external nofollow">最后一页'
}
for($i= 1;$i<=$this->rollPage;$i++){
if(($this->nowPage -$now_cool_page) <= 0 ){
$page=$i;
}elseif(($this->nowPage +$now_cool_page- 1) >=$this->totalPages){
$page=$this->totalPages -$this->rollPage +$i;
}else{
$page=$this->nowPage -$now_cool_page_ceil+$i;
}
if($page> 0 &&$page!=$this->nowPage){
if($page<=$this->totalPages){
$link_page.= ('
'.$page.'
');
}else{
break;
}
}else{
if($page> 0 &&$this->totalPages != 1){
$link_page.= ('
'.$page.'
');
}
}
}
if(!empty($link_page))$link_page='
'.$link_page.'
'
//替换分页内容
$page_str=str_replace(
array('%HEADER%','%NOW_PAGE%','%UP_PAGE%','%DOWN_PAGE%','%FIRST%','%LINK_PAGE%','%END%','%TOTAL_ROW%','%TOTAL_PAGE%'),
array($this->config['header'],$this->nowPage,$up_page,$down_page,$the_first,$link_page,$the_end,$this->totalRows,$this->totalPages),
$this->config['theme']);
$page_str= trim($page_str);
if(!empty($page_str))$page_str.='
跳转'
return$page_str;
}
}
thinkphp框架原理|thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
http://m.bbyears.com/jiaocheng/132104.html
推荐访问: