<?php/************************************************************************************************Description 设置分页字符串,特色:提供灵活的分页方式,而业可以设置上下页图片Author Fyini(老千)QICQ 303590170Version 0.1测试方法 <?php $test=new Pages(234,$_GET['p'],5); echo $test->disp(); ?>************************************************************************************************/class Pages{ var $disp_be_switch; //是否显示第一页和最后一页 var $disp_result_number; //每页显示的记录数 var $pagesNum; //总页数 var $dispPagesNum; //显示页数 var $currentPage; //当前页 var $disp_type=array( 1=>array(array('<<front','next>>'),'┈',array('<font color=red>[',']</font>')), 2=>array(array('<<front','Next>>'),'…',array('<font color=red>〖','〗</font>')), 3=>array(array('<<front','next>>'),'┈',array('[',']')), 4=>array(array('<<front','next>>'),'┈',array('〖','〗')), 5=>array(array('<<','>>'),'┈',array('[',']')), 6=>array(array('<<','>>'),'┈',array('<font color=red>[',']</font>')) ); //默认的几种样式 /** @desc 构造函数,给定:总记录数,当前页数,每页显示的记录数,分页样式0-5,是否绍终显示第一页和最后一页 @param int $resultNumber 总记录数 @param int $current 当前页数 @param int $rowNum 每页显示的记录数 @param int $dispNum 活动页数 @param int $type 分页样式0-5 @param boolean $be_switch 是否绍终显示第一页和最后一页 @return void */ function Pages($resultNumber,$current,$rowNum,$dispNum=5,$type=6,$be_switch=false){ if ($type>6||$type<0)$type=6; $this->pagesNum=ceil($resultNumber/$rowNum); //总页数 $this->currentPage=$current; //当前页数 $this->disp_result_number=$rowNum; //每页显示的记录数 $this->dispPagesNum=$dispNum; //显示的活动页数 $this->disp_type=$this->disp_type[$type]; //分页的样式 $this->disp_be_switch=$be_switch; //是否显示第一页和最后一页 } /** @desc 设置自己的样式时使用的函数 @param array $previus_and_next 前一页,下一页的样式 @param array $height_light 当前页高亮显示 @param string $over 太多页时中间的省略部分 @return void */ function setOtherDispParam($previous_and_next,$height_light,$over){ $this->disp_type=null; $this->disp_type=array($previous_and_next,$over,$height_light); } /** @desc 输出内容 @param string $param 分页参数 @param string $pageurl URL地址 @return string */ function disp($param='p',$pageurl=''){ global $HTTP_SERVER_VARS; if (!$pageurl)$pageurl="http://".$HTTP_SERVER_VARS['HTTP_HOST']. $_SERVER['PHP_SELF']; //当前文件路径 $middle=(int)($this->dispPagesNum/2); //中间数 $startRow=1; //开始下标 $endRow=$this->pagesNum; //结束下标 $previous=false; //有前导 $next=false; //有后导 if ($this->pagesNum>$this->dispPagesNum){ //总页数大于总显示页数,说明使用 << >> 符号 if ($this->currentPage>$middle+1){ //当前页大于总显示的一半+1,说明使用 << 符号 $previous=true; //将前导设置为有 $startRow=($this->currentPage<$this->pagesNum-$middle)?$this->currentPage-$middle:($this->pagesNum-$this->dispPagesNum)+1; //将开始下标设置成:[当前页数 < 总页数 - 中间页数] ? 是[ 当前页-中间页 ] : 否[ 总页数 - 显示宽度 ]+1 } else //没有前导 { $startRow=1; //设置下标为第一页 } if ($this->currentPage<$this->pagesNum-$middle){ //当前页小于总页数的一半,说明使用 >>符号 $next=true; //将后导设置为有 $endRow=($startRow<$middle)?$endRow=$this->dispPagesNum:$this->currentPage+$middle; //将结束下标设置成:[开结行 < 中间行] ? 是[显示宽度] : 否[当前页 + 中间行] } else //没有后导 { $endRow=$this->pagesNum; //将结束行设置成总页数 } } $out=''; //用于输出的字串 for ($i=$startRow;$i<$endRow+1;$i++){ if ($this->currentPage==$i){ $out.="{$this->disp_type[2][0]}{$i}{$this->disp_type[2][1]} "; }else { $out.="<a href='{$pageurl}?{$param}={$i}'>{$i}</a> "; } } $previousPage=$this->currentPage-1; //上一页 $nextPage=$this->currentPage+1; //下一页 if ($previous){ //如果有前导,加上前导 if ($this->disp_be_switch) //是否显示最前页 $out="<a href='{$pageurl}?{$param}={$previousPage}'>{$this->disp_type[0][0]}</a> <a href='{$pageurl}?{$param}=1'>1</a> {$this->disp_type[1]} {$out}"; else $out="<a href='{$pageurl}?{$param}={$previousPage}'>{$this->disp_type[0][0]}</a> {$this->disp_type[1]} {$out}"; } if ($next){ //如果有后导,加上后导 if ($this->disp_be_switch) //是否显示最后页 $out.=" {$this->disp_type[1]} <a href='{$pageurl}?{$param}={$this->pagesNum}'>{$this->pagesNum}</a> <a href='{$pageurl}?{$param}={$nextPage}'>{$this->disp_type[0][1]}</a>"; else $out.=" {$this->disp_type[1]} <a href='{$pageurl}?{$param}={$nextPage}'>{$this->disp_type[0][1]}</a>"; } return $out; } /** @desc 获得总页数 @return int */ function getCountPages(){ return $this->dispPagesNum; } /** @desc 获得总记录数 @return int */ function getCountResult(){ return $this->disp_result_number; } /** @desc 获得当前页的开始记录数 @return int */ function getCurrentPageStart(){ return $this->getCurrentPageEnd()-$this->disp_result_number; } /** @desc 获得当前页的结束记录数 @return int */ function getCurrentPageEnd(){ return $this->currentPage*$this->disp_result_number; } /** @decs 获得当前页的页号 @return int */ function getCurrentPageNumber(){ return $this->currentPage; }}?>