兼容url路由的php分页类

WBOY
リリース: 2016-06-07 11:43:49
オリジナル
1461 人が閲覧しました

该分页类兼容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元

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート