您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

一个php分页类代码(兼容url路由)

2024/2/24 11:41:20发布15次查看
class page{private $total; //数据表中总记录数private $listrows; //每页显示的条数private $limit; //sql语句中使用limit从句,限制获取记录数private $uri; //自动获取url的请求地址private $pagenum; //总页数private $page; //当前页private $config = array( 'head' => '条记录', 'prev' => '上一页', 'next' => '下一页', 'first' => '首页', 'last' => '末页');//在分页信息中显示内容,可以自己通过set()方法设置private $listnum = 5; //默认分页列表显示的个数 /** * 构造方法,可以设置分页类的属性 * @param int $total计算分页的总记录数 * @param int $listrows 可选的,设置每页显示的记录数,默认25 * @param mixed $query可选的,为向目标页面传递参数,可以是数组,也可以是查询字符串格式 * @param bool $ord 默认是true,页面从第一页开始显示,false则从最后一页开始显示 */ bbs.it-home.orgpublic function __construct($total, $listrows=25, $query='', $ord=true){$this->total = $total;$this->listrows = $listrows;$this->uri = $this->geturi($query);$this->pagenum = ceil($this->total/$this->listrows); /*以下判断用来设置当前页*/if(!empty($_get['page'])){$page = $_get['page'];}else{if($ord){ $page = 1;}else{ $page = $this->pagenum;}} if($total > 0){if(preg_match('/\d/', $page)){ $this->page = 1;}else{ $this->page = $page;}} //$this->limit = 'limit '.$this->setlimit();$this->limit = $this->setlimit();} /** * 用于设置显示分页的信息,可以进行连贯操作 * @param string $param 成员属性数组config的下表 * @param string $value 用于设置config下标对应的元素值 * @return object 返回本对象自己$this,用于连贯操作 */function __set($param, $value){if(array_key_exists($param, $this->config)){$this->config[$param] = $value;}//return $this;} /*可以使用在对象外部,直接获取私有成员属性limit和page的值*/function __get($args){if($args == 'limit' || $args == 'page'){return $this->$args;}else{return null;}} /** * 按指定的格式输出分页 * @param int 0-7的数字分别作为参数,用于自定义输出分页结构和调整结构的顺序,默认输出全部结构 * @return string 分页信息内容 */function fpage(){$arr = func_get_args(); $html[0] = 共 {$this->total} {$this->config['head']} ;$html[1] = 本页.$this->disnum().条 ;$html[2] = 本页从{$this->start()} - {$this->end()}条 ;$html[3] = {$this->page}/{$this->pagenum}页 ;$html[4] = $this->firstprev();$html[5] = $this->pagelist();$html[6] = $this->nextlast();$html[7] = $this->gopage(); $fpage = ''; if(count($arr)$arr = array(0,1,2,3,4,5,6,7);} for($i=0; $i$fpage .= $html[$arr[$i]];} $fpage .= '
';return $fpage;} /*在对象内部使用,用于自动获取访问的当前url*/private function geturi($query){$request_uri = $_server['request_uri'];$url = strstr($request_uri, '?') ? $request_uri : $request_uri.'?'; if(is_array($query)){$url .= http_build_query($query);}else if($query != ''){$url .= '&'.trim($query, '?&');} $arr = parse_url($url); if(isset($arr['query'])){parse_str($arr['query'], $arrs);unset($arrs['page']);$url = $arr['path'].'?'.http_build_query($arrs);} if(strstr($url, '?')){if(substr($url, -1) != '?'){ $url = $url.'&';}}else{$url .= '?';}return $url;} /*私有方法,设置limit*/private function setlimit(){if($this->page > 0){return ($this->page - 1)*$this->listrows., {$this->listrows};}else{return 0;}} /*在对象内部使用的私有方法,用于获取当前页开始的记录数*/private function start(){if($this->total == 0){return 0;}else{return ($this->page-1) * $this->listrows + 1;}} /*用于获取当前页结束的记录数*/private function end(){return min($this->page * $this->listrows, $this->total);} /*用于获取本页显示的记录条数*/private function disnum(){if($this->total > 0){return $this->end() - $this->start() + 1;}else{return 0;}} /*用于获取上一页和首页的操作信息*/private function firstprev(){if($this->page > 1){$str = uri%7dpage=1>{$this->config['first']} ;$str .= uri%7dpage=%22.(%24this->page-1).%22>{$this->config['prev']} ;return $str;}} private function pagelist(){$linkpage = ' ';$pagesub = $this->page%$this->listnum;if($pagesub==0 && $this->page>0){$pagesub = $this->listnum;}/*当前页面前面的列表*/for($i=$pagesub-1; $i >= 1; $i--){$page = $this->page-$i;if($page >= 1){ $linkpage .= uri%7dpage=%7b%24page%7d>{$page} ;}} /*当前页的信息*/if($this->pagenum > 1){$linkpage .= {$this->page} ;} /*当前页后面的列表*/for($i=1; $ilistnum-$pagesub; $i++){$page = $this->page + $i;if($pagepagenum){ $linkpage .= uri%7dpage=%7b%24page%7d>{$page} ;}else{ break;}} $linkpage .= '';return $linkpage;} /*用于获取页数列表信息*/private function pagelistbak(){$linkpage = ' '; $inum = floor($this->listnum/2);/*当前页面前面的列表*/for($i=$inum; $i >= 1; $i--){$page = $this->page-$i;if($page >= 1){ $linkpage .= uri%7dpage=%7b%24page%7d>{$page} ;}} /*当前页的信息*/if($this->pagenum > 1){$linkpage .= {$this->page} ;} /*当前页后面的列表*/for($i=1; $i$page = $this->page + $i;if($pagepagenum){ $linkpage .= uri%7dpage=%7b%24page%7d>{$page} ;}else{ break;}} $linkpage .= '';return $linkpage;} /*获取下一页和尾页的操作信息*/private function nextlast(){if($this->page != $this->pagenum){$str = uri%7dpage=%22.(%24this->page+1).%22>{$this->config['next']} ;$str .= uri%7dpage=%7b%24this->pagenum%7d>{$this->config['last']} ;return $str;}} /*用于显示和处理表单跳转页面*/private function gopage(){if($this->pagenum > 1){return ' '.$this->pagenum.')?'.$this->pagenum.':this.value;location=\''.$this->uri.'page=\'+page+\'\'} value='.$this->page.'>'.$this->pagenum.')?'.$this->pagenum.':this.previoussibling.value;location=\''.$this->uri.'page=\'+page+\'\'> ';}}}
复制代码
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product