class Pager{ //IE地址栏地址 var $url; //记录总条数 var $countall; //总页数 var $page; //分页数字链接 var $thestr; //首页、上一页链接 var $backstr; //尾页、下一页链接 var $nextstr; //当前页码 var $pg; //每页显示记录数量 var $countlist; //翻页样式 var $style; //构造函数,实例化该类的时候自动执行该函数 function Pager($countall,$countlist,$style="page"){ //记录数与每页显示数不能整队时,页数取余后加1 $this->countall = $countall; $this->countlist = $countlist; $this->style=$style; if ($this->countall%$this->countlist!=0){ $this->page=sprintf("%d",$this->countall/$this->countlist)+1; }else{ $this->page=$this->countall/$this->countlist; }
$this->pg=$_GET["pg"]; //保证pg在未指定的情况下为从第1页开始 if (!ereg("^[1-9][0-9]*$",$this->pg) || empty($this->pg)){ $this->pg=1; } //页码超出最大范围,取最大值 if ($this->pg>$this->page){ $this->pg=$this->page; } //得到当前的URL。具体实现请看最底部的函数实体 $this->url = Pager::getUrl(); //替换错误格式的页码为正确页码 if(isset($_GET["pg"]) && $_GET["pg"]!=$this->pg){ $this->url=str_replace("?pg=".$_GET["pg"],"?pg=$this->pg",$this->url); $this->url=str_replace("&pg=".$_GET["pg"],"&pg=$this->pg",$this->url); } //生成12345等数字形式的分页。 if ($this->page<=10){ for ($i=1;$i<$this->page+1;$i++){ $this->thestr=$this->thestr.Pager::makepg($i,$this->pg); } }else{ if ($this->pg<=5){ for ($i=1;$i<10;$i++){ $this->thestr=$this->thestr.Pager::makepg($i,$this->pg); } }else{ if (6+$this->pg<=$this->page){ for ($i=$this->pg-4;$i<$this->pg+6;$i++){ $this->thestr=$this->thestr.Pager::makepg($i,$this->pg); } }else{ for ($i=$this->pg-4;$i<$this->page+1;$i++){ $this->thestr=$this->thestr.Pager::makepg($i,$this->pg); }