PHP分页类

2018-07-20    来源:open-open

容器云强势上线!快速搭建集群,上万Linux镜像随意使用
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
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

上一篇:IOS 定位CoreLocation代码

下一篇:http请求处理PHP类