Home > php教程 > php手册 > body text

兼容url路由的php分页类

WBOY
Release: 2016-06-07 11:43:49
Original
1460 people have browsed it

该分页类兼容url路由的php分页类
该类有个不足的地方,那就是post传的参数无法获取,如果有哪位大神解决了这个问题还希望给小弟分享一下!该文章同时发布在自己的博客上(http://wanql.sinaapp.com/blog_21.html),希望大家帮忙顶下 ^^
上代码!!!class Page{<br>     private $total;                         //数据表中总记录数<br>     private $listRows;                      //每页显示的条数<br>     private $limit;                         //SQL语句中使用limit从句,限制获取记录数<br>     private $uri;                           //自动获取url的请求地址<br>     private $pageNum;                       //总页数<br>     private $page;                          //当前页<br>     private $config = array(<br>                 'head' => '条记录',<br>                 'prev' => '上一页',<br>                 'next' => '下一页',<br>                 'first' => '首页',<br>                 'last' => '末页'<br>             );              //在分页信息中显示内容,可以自己通过set()方法设置<br>     private $listNum = 5;               //默认分页列表显示的个数<br>      <br>     /**<br>      * 构造方法,可以设置分页类的属性<br>      * @param int $total              计算分页的总记录数<br>      * @param int $listRows      可选的,设置每页显示的记录数,默认25<br>      * @param mixed $query    可选的,为向目标页面传递参数,可以是数组,也可以是查询字符串格式<br>      * @param bool $ord             默认是true,页面从第一页开始显示,false则从最后一页开始显示<br>      */<br>     public function __construct($total, $listRows=25, $query='', $ord=true){<br>         $this->total = $total;<br>         $this->listRows = $listRows;<br>         $this->uri = $this->getUri($query);<br>         $this->pageNum = ceil($this->total/$this->listRows);<br>          <br>         /*以下判断用来设置当前页*/<br>         if(!empty($_GET['page'])){<br>             $page = $_GET['page'];<br>         }else{<br>             if($ord){<br>                 $page = 1;<br>             }else{<br>                 $page = $this->pageNum;<br>             }<br>         }<br>          <br>         if($total > 0){<br>             if(preg_match('/\D/', $page)){<br>                 $this->page = 1;<br>             }else{<br>                 $this->page = $page;<br>             }<br>         }<br>          <br>         //$this->limit = 'LIMIT '.$this->setLimit();<br>         $this->limit = $this->setLimit();<br>     }<br>      <br>     /**<br>      * 用于设置显示分页的信息,可以进行连贯操作<br>      * @param string $param   成员属性数组config的下表<br>      * @param string $value     用于设置config下标对应的元素值<br>      * @return object                   返回本对象自己$this,用于连贯操作<br>      */<br>     function __set($param, $value){<br>         if(array_key_exists($param, $this->config)){<br>             $this->config[$param] = $value;<br>         }<br>         //return $this;<br>     }<br>      <br>     /*可以使用在对象外部,直接获取私有成员属性limit和page的值*/<br>     function __get($args){<br>         if($args == 'limit' || $args == 'page'){<br>             return $this->$args;<br>         }else{<br>             return null;<br>         }<br>     }<br>      <br>     /**<br>      * 按指定的格式输出分页<br>      * @param int 0-7的数字分别作为参数,用于自定义输出分页结构和调整结构的顺序,默认输出全部结构<br>      * @return string 分页信息内容<br>      */<br>     function fpage(){<br>         $arr = func_get_args();<br>          <br>         $html[0] = " 共<b> {$this->total} </b>{$this->config['head']} ";<br>         $html[1] = " 本页<b>".$this->disnum()."</b>条 ";<br>         $html[2] = " 本页从<b>{$this->start()} - {$this->end()}</b>条 ";<br>         $html[3] = " <b>{$this->page}/{$this->pageNum}</b>页 ";<br>         $html[4] = $this->firstprev();<br>         $html[5] = $this->pageList();<br>         $html[6] = $this->nextlast();<br>         $html[7] = $this->goPage();<br>          <br>         $fpage = '<div>';<br>          <br>         if(count($arr)             $arr = array(0,1,2,3,4,5,6,7);<br>         }<br>          <br>         for($i=0; $i<count></count>             $fpage .= $html[$arr[$i]];<br>         }<br>          <br>         $fpage .= '</div>';<br>         return $fpage;<br>     }<br>      <br>      <br>      <br>     /*在对象内部使用,用于自动获取访问的当前url*/<br>     private function getUri($query){<br>         $request_uri = $_SERVER['REQUEST_URI'];<br>         $url = strstr($request_uri, '?') ? $request_uri : $request_uri.'?';<br>          <br>         if(is_array($query)){<br>             $url .= http_build_query($query);<br>         }else if($query != ''){<br>             $url .= '&'.trim($query, '?&');<br>         }<br>          <br>         $arr = parse_url($url);<br>          <br>         if(isset($arr['query'])){<br>             parse_str($arr['query'], $arrs);<br>             unset($arrs['page']);<br>             $url = $arr['path'].'?'.http_build_query($arrs);<br>         }<br>          <br>         if(strstr($url, '?')){<br>             if(substr($url, -1) != '?'){<br>                 $url = $url.'&';<br>             }<br>         }else{<br>             $url .= '?';<br>         }<br>         return $url;<br>     }<br>      <br>     /*私有方法,设置limit*/<br>     private function setLimit(){<br>         if($this->page > 0){<br>             return ($this->page - 1)*$this->listRows.", {$this->listRows}";<br>         }else{<br>             return 0;<br>         }<br>     }<br>      <br>     /*在对象内部使用的私有方法,用于获取当前页开始的记录数*/<br>     private function start(){<br>         if($this->total == 0){<br>             return 0;<br>         }else{<br>             return ($this->page-1) * $this->listRows + 1;<br>         }<br>     }<br>      <br>     /*用于获取当前页结束的记录数*/<br>     private function end(){<br>         return min($this->page * $this->listRows, $this->total);<br>     }<br>      <br>     /*用于获取本页显示的记录条数*/<br>     private function disnum(){<br>         if($this->total > 0){<br>             return $this->end() - $this->start() + 1;<br>         }else{<br>             return 0;<br>         }<br>     }<br>      <br>     /*用于获取上一页和首页的操作信息*/<br>     private function firstprev(){<br>         if($this->page > 1){<br>             $str = " <a>uri}page=1'>{$this->config['first']}</a> ";<br>             $str .= "<a>uri}page=".($this->page-1)."'>{$this->config['prev']}</a> ";<br>             return $str;<br>         }<br>     }<br>      <br>     private function pageList(){<br>         $linkPage = ' <b>';<br>         $pageSub = $this->page%$this->listNum;<br>         if($pageSub==0 && $this->page>0){<br>             $pageSub = $this->listNum;<br>         }<br>         /*当前页面前面的列表*/<br>         for($i=$pageSub-1; $i >= 1; $i--){<br>             $page = $this->page-$i;<br>             if($page >= 1){<br>                 $linkPage .= "<a>uri}page={$page}'>{$page}</a> ";<br>             }<br>         }<br>          <br>         /*当前页的信息*/<br>         if($this->pageNum > 1){<br>             $linkPage .= "<span>{$this->page}</span> ";<br>         }<br>          <br>         /*当前页后面的列表*/<br>         for($i=1; $ilistNum-$pageSub; $i++){<br>             $page = $this->page + $i;<br>             if($pagepageNum){<br>                 $linkPage .= "<a>uri}page={$page}'>{$page}</a> ";<br>             }else{<br>                 break;<br>             }<br>         }<br>          <br>         $linkPage .= '</b>';<br>         return $linkPage;<br>     }<br>      <br>     /*用于获取页数列表信息*/<br>     private function pageListBak(){<br>         $linkPage = ' <b>';<br>          <br>         $inum = floor($this->listNum/2);<br>         /*当前页面前面的列表*/<br>         for($i=$inum; $i >= 1; $i--){<br>             $page = $this->page-$i;<br>             if($page >= 1){<br>                 $linkPage .= "<a>uri}page={$page}'>{$page}</a> ";<br>             }<br>         }<br>          <br>         /*当前页的信息*/<br>         if($this->pageNum > 1){<br>             $linkPage .= "<span>{$this->page}</span> ";<br>         }<br>          <br>         /*当前页后面的列表*/<br>         for($i=1; $i             $page = $this->page + $i;<br>             if($pagepageNum){<br>                 $linkPage .= "<a>uri}page={$page}'>{$page}</a> ";<br>             }else{<br>                 break;<br>             }<br>         }<br>          <br>         $linkPage .= '</b>';<br>         return $linkPage;<br>     }<br>      <br>     /*获取下一页和尾页的操作信息*/<br>     private function nextlast(){<br>         if($this->page != $this->pageNum){<br>             $str = " <a>uri}page=".($this->page+1)."'>{$this->config['next']}</a> ";<br>             $str .= " <a>uri}page={$this->pageNum}'>{$this->config['last']}</a> ";<br>             return $str;<br>         }<br>     }<br>      <br>     /*用于显示和处理表单跳转页面*/<br>     private function goPage(){<br>         if($this->pageNum > 1){<br>             return ' <input>'.$this->pageNum.')?'.$this->pageNum.':this.value;location=\''.$this->uri.'page=\'+page+\'\'}" value="'.$this->page.'" /><input>'.$this->pageNum.')?'.$this->pageNum.':this.previousSibling.value;location=\''.$this->uri.'page=\'+page+\'\'" /> ';<br>         }<br>     }<br> }

AD:真正免费,域名+虚机+企业邮箱=0元

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template