php分页类代码
/
PHP分页类
@packagePage
@Created2013-03-27
@Modify2013-03-27
@linkhttp://www.60ie.net
Example:
$myPage=newPager(1300,intval($CurrentPage));
$pageStr=$myPage->GetPagerContent();
echo$pageStr;
/
classPager{
private$pageSize=10;
private$pageIndex;
private$totalNum;
private$totalPagesCount;
private$pageUrl;
privatestatic$_instance;
publicfunction__construct($p_totalNum,$p_pageIndex,$p_pageSize=10,$p_initNum=3,$p_initMaxNum=5){
if(!isset($p_totalNum)||!isset($p_pageIndex)){
die("pagerinitialerror");
}
$this->totalNum=$p_totalNum;
$this->pageIndex=$p_pageIndex;
$this->pageSize=$p_pageSize;
$this->initNum=$p_initNum;
$this->initMaxNum=$p_initMaxNum;
$this->totalPagesCount=ceil($p_totalNum/$p_pageSize);
$this->pageUrl=$this->_getPageUrl();
$this->_initPagerLegal();
}
/
获取去除page部分的当前URL字符串
@returnStringURL字符串
/
privatefunction_getPageUrl(){
$CurrentUrl=$_SERVER["REQUEST_URI"];
$arrUrl=parse_url($CurrentUrl);
$urlQuery=$arrUrl["query"];
if($urlQuery){
$urlQuery=ereg_replace("(^|&)page=".$this->pageIndex,"",$urlQuery);
$CurrentUrl=str_replace($arrUrl["query"],$urlQuery,$CurrentUrl);
if($urlQuery){
$CurrentUrl.="&page";
}
else$CurrentUrl.="page";
}else{
$CurrentUrl.="?page";
}
return$CurrentUrl;
}
/
设置页面参数合法性
@returnvoid
/
privatefunction_initPagerLegal()
{
if((!is_numeric($this->pageIndex))||$this->pageIndex<1)
{
$this->pageIndex=1;
}elseif($this->pageIndex>$this->totalPagesCount)
{
$this->pageIndex=$this->totalPagesCount;
}
}
//$this->pageUrl}={$i}
//{$this->CurrentUrl}={$this->TotalPages}
publicfunctionGetPagerContent(){
$str="";
//首页上一页
if($this->pageIndex==1)
{
$str.="首页"."\n";
$str.="上一页"."\n"."\n";
}else
{
$str.="pageUrl}=1''class=''tips''title=''首页''>首页"."\n";
$str.="pageUrl}=".($this->pageIndex-1)."''class=''tips''title=''上一页''>上一页"."\n"."\n";
}
/
除首末后页面分页逻辑
/
//10页(含)以下
$currnt="";
if($this->totalPagesCount<=10)
{
for($i=1;$i<=$this->totalPagesCount;$i++)
{
if($i==$this->pageIndex)
{$currnt="class=''current''";}
else
{$currnt="";}
$str.="pageUrl}={$i}''{$currnt}>$i"."\n";
}
}else//10页以上
{if($this->pageIndex<3)//当前页小于3
{
for($i=1;$i<=3;$i++)
{
if($i==$this->pageIndex)
{$currnt="class=''current''";}
else
{$currnt="";}
$str.="pageUrl}={$i}''{$currnt}>$i"."\n";
}
$str.="……"."\n";
for($i=$this->totalPagesCount-3+1;$i<=$this->totalPagesCount;$i++)//功能1
{
$str.="pageUrl}={$i}''>$i"."\n";
}
}elseif($this->pageIndex<=5)//5>=当前页>=3
{
for($i=1;$i<=($this->pageIndex+1);$i++)
{
if($i==$this->pageIndex)
{$currnt="class=''current''";}
else
{$currnt="";}
$str.="pageUrl}={$i}''{$currnt}>$i"."\n";
}
$str.="……"."\n";
for($i=$this->totalPagesCount-3+1;$i<=$this->totalPagesCount;$i++)//功能1
{
$str.="pageUrl}={$i}''>$i"."\n";
}
}elseif(5<$this->pageIndex&&$this->pageIndex<=$this->totalPagesCount-5)//当前页大于5,同时小于总页数-5
{
for($i=1;$i<=3;$i++)
{
$str.="pageUrl}={$i}''>$i"."\n";
}
$str.="……";
for($i=$this->pageIndex-1;$i<=$this->pageIndex+1&&$i<=$this->totalPagesCount-5+1;$i++)
{
if($i==$this->pageIndex)
{$currnt="class=''current''";}
else
{$currnt="";}
$str.="pageUrl}={$i}''{$currnt}>$i"."\n";
}
$str.="……";
for($i=$this->totalPagesCount-3+1;$i<=$this->totalPagesCount;$i++)
{
$str.="pageUrl}={$i}''>$i"."\n";
}
}else
{
for($i=1;$i<=3;$i++)
{
$str.="pageUrl}={$i}''>$i"."\n";
}
$str.="……"."\n";
for($i=$this->totalPagesCount-5;$i<=$this->totalPagesCount;$i++)//功能1
{
if($i==$this->pageIndex)
{$currnt="class=''current''";}
else
{$currnt="";}
$str.="pageUrl}={$i}''{$currnt}>$i"."\n";
}
}
}
/
除首末后页面分页逻辑结束
/
//下一页末页
if($this->pageIndex==$this->totalPagesCount)
{
$str.="\n"."下一页"."\n";
$str.="末页"."\n";
}else
{
$str.="\n"."pageUrl}=".($this->pageIndex+1)."''class=''tips''title=''下一页''>下一页"."\n";
$str.="pageUrl}={$this->totalPagesCount}''class=''tips''title=''末页''>末页"."\n";
}
$str.="";
return$str;
}
/
获得实例
@return
/
//staticpublicfunctiongetInstance(){
//if(is_null(self::$_instance)){
//self::$_instance=newpager();
//}
//returnself::$_instance;
//}
}
?>
|
|