<?php //分页类 class page{ private $total_rows; //总条数 private $onepage_rows;//一页显示数量 private $total_page; //总页数 private $page_rows; //页码数量 private $start_id;//描述起始ID private $end_id;//描述结束ID private $desc = ''; //描述上一页,下一页 private $self_page; //当前页 private $url; public function __construct($total,$onepage_rows=10,$page_rows=5,$desc=''){ $this->total_rows = $total; $this->onepage_rows = $onepage_rows; $this->page_rows = $page_rows; $this->total_page = ceil($this->total_rows / $this->onepage_rows); $this->self_page = min(max((int)@$_GET['page'],1),$this->total_page); $this->start_id= ($this->self_page-1)*$this->onepage_rows+1; $this->end_id= min($this->self_page*$this->onepage_rows , $this->total_rows); $this->desc = $this->desc($desc); //上一页 下一页 共X条记录等信息 $this->url = $this->requestUrl(); //URL生成 } private function requestUrl(){ $url =isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'] ; $parse_url = parse_url($url); if(isset($parse_url['query'])){ parse_str($parse_url['query'],$arr); unset($arr['page']); $url = $parse_url['path'] .'?'.http_build_query($arr).'&page='; }else{ $url = strstr($url,'?') ? $url.'page=' :$url. '?page='; } return $url; } //指定列表页码 public function pagelist(){ $start=max(1,min($this->self_page-ceil($this->page_rows/2),$this->total_page-$this->page_rows)); $end=$start + $this->page_rows; $arr = array(); for($i=$start; $i<=$end; $i++){ if($i == $this->self_page){ $arr[$i]['url'] = ''; $arr[$i]['str'] = $i; continue; } $arr[$i]['url'] = $this->url.$i; $arr[$i]['str'] = $i; } return $arr; } //返回代码列表的字符串表示 public function pageshow(){ $pagelist = $this->pagelist(); $pagestr = ''; foreach($pagelist as $v){ if(empty($v['url'])){ $pagestr .= '<strong>'.$v['str'].'</strong>'; continue; } $pagestr .= "<a href='".$v['url']."'>".$v['str']."</a>"; } return $pagestr; } public function desc($desc){ $d = array('prev' => '上一页','next' => '下一页','first'=> '首页','last' => '末页'); if(empty($desc) || !is_array($desc)){ return $d;} function filter($v){ return !empty($v); } return array_merge($d,array_filter($desc,'filter')); } //首页 public function first(){ return $this->self_page > 1 ? '<a href="'.$this->url.'1">'.$this->desc['first'].'</a>':''; } //末页 public function last(){ return $this->self_page < $this->page_rows ? '<a href="'.$this->url.$this->page_rows.'">'.$this->desc['last'].'</a>':''; } //上一页 public function prev(){ return $this->self_page > 1 ? '<a href="'.$this->url.($this->self_page-1).'">'.$this->desc['prev'].'</a>':''; } //下一页 public function next(){ return $this->self_page < $this->total_page ? '<a href="'.$this->url.($this->self_page+1).'">'.$this->desc['next'].'</a>':''; } //返回当前第X-X条 public function nowpage(){ return '当前第'.$this->self_page.'页 第'.$this->start_id.'——'.$this->end_id.'条'; } public function limit(){ return 'limit '.max(0,($this->self_page-1)*$this->onepage_rows).','.$this->onepage_rows; } } ?>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。