php之分页类独立完成(未精简)
<?php /************ * * subPage.class.php * 分页类 * *************/ class SubPage{ private $sizeInPage;//每页显示多少条记录 private $totalRecord;//总共多少条记录 private $totalPage;//总共多少页 private $currentPage;//当前页 private $startIndex;//开始索引 private $offset;//偏移数 private $firstPage;//首页 private $endPage;//尾页 private $next;//下一页 private $last;//上一页 private $subPage_arr;//分页数组 private $subPage_count;//分页数组显示的个数 private $resultSet;//结果集 /* * @function 构造方法 * @param $size_in_page每页显示记录数,$current_page当前页,$toatal_record总记录数,$subPage_count分页列数组显示的个数 * @return */ public function __construct($size_in_page,$current_page,$total_record,$subPage_count){ //$this->initPageArr($page_count); $this->init($size_in_page,$current_page,$total_record,$subPage_count); $this->setTotalPage(); $this->setStartIndex(); $this->setOffset(); if($this->is_SubPage()){ //有分页的情况 $this->setSubPageArr(); } else{ //没有分页的情况 $this->subPage_arr=array(); } } /* * @function 初始化对象属性 * @param $size_in_page每页显示记录数,$current_page当前页,$toatal_record总记录数 * @return none */ public function init($size_in_page,$current_page,$total_record,$subPage_count){ $this->sizeInPage=$size_in_page; $this->currentPage=$current_page; $this->totalRecord=$total_record; $this->subPage_count=$subPage_count; } /* * @function 设定总页数 */ public function setTotalPage(){ $this->totalPage=ceil($this->totalRecord/$this->sizeInPage); } /* * @function 设定开始索引 */ public function setStartIndex(){ $this->startIndex=($this->currentPage-1)*$this->sizeInPage; } /* * @function 设定偏移量 */ public function setOffset(){ $this->offset=$this->sizeInPage; } /* * @function 设定首页的页数 */ public function setFirstPage(){ $this->firstPage=1; } /* * @function 设定尾页的页数 */ public function setEndPage(){ $this->endPage=$this->totalPage; } /* * @function 设定下一页的页数 */ public function setNext(){ $tmp_next=$this->currentPage+1; if($tmp_next>$this->totalPage){ $tmp_next=$this->totalPage; } $this->next=$tmp_next; } /* * @function 设定上一页的页数 */ public function setLast(){ $tmp_last=$this->currentPage-1; if($tmp_last<1){ $tmp_last=1; } $this->last=$tmp_last; } /* * @function 判断是否有分页 * @return boolean 返回true表示有分页,false表示没有 */ public function is_SubPage(){ if($this->totalPage>1){ return true; } else{ return false; } } /* * @function 组装分页数组 * @param $start开始的页码数,$count几个页码数 */ public function initSubPageArr($start,$count){ $arr=array(); for($i=0;$i<$count;$i++,$start++){ $arr[$i]=$start; } $this->subPage_arr=$arr; } /* * @function 检测数值是否奇数 * @param $num被检测数 * @return boolean 返回true表示是奇数,返回false表示是偶数 */ public function is_odd($num){ if($num%2==0){ return false; } else{ return true; } } /* * @function 设定分页数组 * @param none * @return none */ public function setSubPageArr(){ if($this->totalPage<=$this->subPage_count){ //只有一轮数组 $start=1; $count=$this->totalPage-$start+1; $this->initSubPageArr($start,$count); } else{ if($this->currentPage<ceil($this->subPage_count/2)){ //第一轮数组 当前页小于均分数的情况 $start=1; $count=$this->subPage_count-$start+1; $this->initSubPageArr($start,$count); } else if($this->currentPage<=$this->totalPage && $this->currentPage>($this->totalPage-ceil($this->subPage_count/2))){ //最后一轮数组 当前页大于总页数-均分数 $start=$this->totalPage-$this->subPage_count+1; $count=$this->subPage_count; $this->initSubPageArr($start,$count); } else{ //其余情况 if(($this->currentPage%$this->subPage_count)>ceil($this->subPage_count/2)){ //点到数组后半部分 $rs=$this->is_odd($this->subPage_count); if($rs===true){ //显示数是奇数 $start=$this->currentPage-floor($this->subPage_count/2); $count=$this->subPage_count; $this->initSubPageArr($start,$count); } else{ //显示数是偶数 $start=$this->currentPage-(($this->subPage_count/2)-1);//因为当前页数也需要占1个位置 $count=$this->subPage_count; $this->initSubPageArr($start,$count); } } else{ //点到数组前半部分 $rs=$this->is_odd($this->subPage_count); if($rs===true){ //显示数是奇数 $start=$this->currentPage-floor($this->subPage_count/2); $count=$this->subPage_count; $this->initSubPageArr($start,$count); } else{ //显示数是偶数 $start=$this->currentPage-(($this->subPage_count/2)-1);//因为当前页数也需要占1个位置 $count=$this->subPage_count; $this->initSubPageArr($start,$count); } } } } } /* * @function 查看分页数的效果 * @param none * @return string 分页码效果 */ public function showSubPageArr(){ $arr=$this->subPage_arr; $str=""; foreach($arr as $key=>$value){ $str.=$value."_"; } $str=rtrim($str,"_"); echo $str; } } $subPage=new SubPage(2,7,19,6); $subPage->showSubPageArr(); ?>
刚写的一个分页类,还未进行代码精简。各位大大们看看,哪里写的不对的,希望各位大大,前辈指出。谢谢!本人菜鸟一个虚心求教。