<?PHP /** *防淘宝带省略号的AJAX分页 *@paramdate *@authorhany */ classAjaxPage{ private$total;//数据表中总记录数 private$listRows;//每页显示行数 private$limit;//分页参数 private$uri; private$pageNum;//总页数 private$config=array('header'=>"个记录","prev"=>"上一页","next"=>"下一页","first"=>"首页","last"=>"尾页"); private$adjacents=3;//两侧显示的页码数量. /** *构造函数 *@paramunkNown$total *@paramnumber$listRows *@paramstring$pa */ publicfunction__construct($total,$listRows=10,$pa=""){ $this->total=$total; $this->listRows=$listRows; $this->uri=$this->getUri($pa); $this->page=!empty($_GET["page"])?intval($_GET["page"]):1;//当前页数 $this->pageNum=ceil($this->total/$this->listRows); $this->limit=$this->setLimit(); } /** *设置分页偏移量 *@returnstring */ privatefunctionsetLimit(){ return"Limit".($this->page-1)*$this->listRows.",{$this->listRows}"; } /** *获取URL地址 *@paramunkNown$pa *@returnstring */ privatefunctiongetUri($pa){ $url=$_SERVER["REQUEST_URI"].(strpos($_SERVER["REQUEST_URI"],'?')?'':"?").$pa; //解析URL,返回其组成部分 $parse=parse_url($url); //将字符串解析成多个变量 if(isset($parse["query"])){ parse_str($parse['query'],$params); unset($params["page"]);//去除url里面的page $url=$parse['path'].'?'.http_build_query($params); } return$url; } /** *获取一个类的私有成员 *@paramunkNown$args *@returnNULL */ publicfunction__get($args){ if($args=="limit"){ return$this->limit; }else{ returnnull; } } /** *首页 *@returnstring */ privatefunctionfirst(){ if($this->page>($this->adjacents+1)){ return"<ahref='javascript:setPage(\"{$this->uri}&page=1\")'>1</a> "; } return""; } /** *上一页 *@returnstring */ privatefunctionprev(){ if($this->page==1){ return"<a>{$this->config["prev"]}</a> "; }elseif($this->page==2){ return"<ahref='javascript:setPage(\"{$this->uri}"."\")'>{$this->config["prev"]}</a> "; }else{ return"<ahref='javascript:setPage(\"{$this->uri}&page=".($this->page-1)."\")'>{$this->config["prev"]}</a> "; } } /** *列表 *@returnstring */ privatefunctionPagelist(){ $linkPage=""; //省略号 if($this->page>($this->adjacents+2)){ $linkPage.="<a>...</a> "; } //pages $pmin=($this->page>$this->adjacents)?($this->page-$this->adjacents):1; $pmax=($this->page<($this->pageNum-$this->adjacents))?($this->page+$this->adjacents):$this->pageNum; for($i=$pmin;$i<=$pmax;$i++){ if($i==$this->page){ $linkPage.="<aclass='current'>{$this->page}</a> "; }elseif($i==1){ $linkPage.="<ahref='javascript:setPage(\"{$this->uri}"."\")'>{$i}</a> "; }else{ $linkPage.="<ahref='javascript:setPage(\"{$this->uri}&page={$i}\")'>{$i}</a> "; } } //省略号 if($this->page<($this->pageNum-$this->adjacents-1)){ $linkPage.="<a>...</a> "; } return$linkPage; } /** *下一页 *@returnstring */ privatefunctionnext(){ if($this->page<$this->pageNum){ return"<ahref='javascript:setPage(\"{$this->uri}&page=".($this->page+1)."\")'>{$this->config["next"]}</a> "; }else{ return"<a>{$this->config["next"]}</a> "; } } /** *总页数 *@returnstring */ privatefunctiontotal(){ return'共'.$this->pageNum.'页,第'.$this->page.'页 '; } /** *尾页 *@returnstring */ privatefunctionlast(){ if($this->page<($this->pageNum-$this->adjacents)){ return"<ahref='javascript:setPage(\"{$this->uri}&page=".($this->pageNum)."\")'>{$this->pageNum}</a> "; } return""; } /** *跳转 *@returnstring */ privatefunctiongoPage(){ return'<inputtype="text"onkeydown="javascript:if(event.keyCode==13){varpage=(this.value>'.$this->pageNum.')?'.$this->pageNum.':this.value;setPage(\''.$this->uri.'&page=\'+page+\'\')}"value="'.$this->page.'"style="width:25px"><inputtype="button"value="GO"onclick="javascript:varpage=(this.prevIoUsSibling.value>'.$this->pageNum.')?'.$this->pageNum.':this.prevIoUsSibling.value;setPage(\''.$this->uri.'&page=\'+page+\'\')">'; } /** *获取分页列表 *@paramunkNown$display *@returnAmbigous<string,unkNown> */ publicfunctionfpage($display=array(0,1,2,3,4,5)){ $html[0]=$this->total(); $html[1]=$this->prev(); $html[2]=$this->first(); $html[3]=$this->Pagelist(); $html[4]=$this->last(); $html[5]=$this->next(); $fpage=''; foreach($displayas$index){ $fpage.=$html[$index]; } return$fpage; } } //实例分页类对象 $page=newAjaxPage($total,$pagesize);