PHP分页类
2018-07-20 来源:open-open
class PageTool{ private $nums; //总条目数 private $eachNums;//每页显示的条目数 private $pages;//总页数 private $eachPages;//每次显示的页数 private $currentPage;//当前选中页 private $pageArray=array();//分页数组 /* @ 实例后__construct()方法自动执行,需传入以下参数 @$nums 总条目数 @$eachNums 每页显示的条目数 @$eachPages 每次显示的页数 @$currentPage 当前选中的页数(可选参数) */ public function __construct($nums,$eachNums,$eachPages=1,$currentPage=1){ //头信息,用UTF8显示 header('Content-type:text/html;charset=utf-8'); //总条目数 $this->nums=$nums; //每页显示的条目数 $this->eachNums=$eachNums; //总页数 $this->pages=ceil($nums/$eachNums); //每次显示的页数 if($eachPages>=$this->pages){ $this->eachPages=$this->pages; }else{ $this->eachPages=$eachPages; } /* 当前选中页 如果传了值并且大于计算出的总页数,则选中页默认为最后一页 否则检测地址栏是否有page数,若有则设为当前选中页,否则默认为空 */ if(!empty($currentPage)&&$currentPage>$this->pages){ $this->currentPage=$this->pages; }else{ $this->currentPage=isset($_GET['page'])?$_GET['page']+0:$currentPage; } //生成分页数组 $this->pageArray($eachPages); } //当对象失去所有引用或显示销毁时,则自动调用__destruct()方法,自动销毁属性. public function __destruct(){ unset($this->nums); unset($this->eachNums); unset($this->pages); unset($this->eachPages); unset($this->currentPage); unset($this->pageArray); } //建立分页数组(用于显示每次显示的页码) //如显示十页: 1 2 3 4 5 6 7 8 9 10 protected function pageArray(){ for($i=0;$i<$this->eachPages;$i++){ $this->pageArray[$i]=$i; } return $this->pageArray; } //选中某页后显示的页条目 protected function showPages(){ //显示页数的数组 $showPages=$this->pageArray; if($this->eachPages>=$this->pages){ for($i=0;$i<$this->pages;$i++){ $showPages[$i]=$i+1; } }else if($this->currentPage<=3){ for($i=0;$i$showPages[$i]=$i+1; } }else if($this->currentPage<=$this->pages && $this->currentPage>($this->pages-$this->eachPages+1)){ for($i=0;$i<$this->eachPages;$i++){ $showPages[$i]=($this->pages-$this->eachPages)+1+$i; } }else{ for($i=0;$i<$this->eachPages;$i++){ $showPages[$i]=$this->currentPage-2+$i; } } return $showPages; } //完成分页 public function constructPages(){ //当前页 $str='当前'.$this->currentPage.'/'.$this->pages.'页'; //上页 if($this->currentPage<=1){$upPage=1;}else{$upPage=$this->currentPage-1;} //下页 if($this->currentPage>=$this->pages){$downPage=$this->pages;}else{$downPage=$this->currentPage+1;} //最后页 $lastPage=$this->pages; //脚本名 $script_name=$_SERVER['SCRIPT_NAME']; //?后的字符串 $query_string=$_SERVER['QUERY_STRING']; $arr=array(); //?后的字符串处理成数组 parse_str($query_string,$arr); //删除page项 unset($arr['page']); //将数组转换成新的string地址 $query_string=http_build_query($arr); //组成新的URL if(empty($query_string)){ $url=$script_name.'?'; } $url=$script_name.'?'.$query_string.'&'; //生成分页数组 $showPages=$this->showPages(); //循环出分页 $URL=''; foreach($showPages as $v){ if($v==$this->currentPage){ $URL.=''.'['.$v.'] '; }else{ $URL.=''.'['.$v.']'.' '; } } //首页 $firstPage=''.'首页'.' '; //上一页 $up=''.'上一页'.' '; //下一页 $down=''.'下一页'.' '; //尾页 $last=''.'尾页'.' '; return $firstPage.$up.$URL.$down.$last; } } //$page=new PageTool(50,5,5); //echo $page->constructPages();
标签: 脚本
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。
下一篇:http请求处理PHP类
最新资讯
热门推荐