首页 > php教程 > php手册 > 正文

【推荐】一个解决自定义路由的分页类

php中文网
发布: 2016-06-07 11:38:05
原创
1126人浏览过

【推荐】一个解决自定义路由的分页类
 //----------------------------------------------------------<br>  //声明: 本代码并非完美,也许存在不佳之处,请放肆吐槽!<br>  //作者: 小曾<br>  //扣扣: 839024615<br>  //网址: www.yun8888.net<br>  //关于我的ThinkPHP http://www.thinkphp.cn/u/87696.html<br>  //----------------------------------------------------------<br><br><br><br><br><br> //好多人在问,假如我们给列表重新定义的路由<br> //那么原本地址是 list/index/id/1.html<br> //定义后 list/1.html <br> //当你在系统分页类时,他又会跳到 list/index/id/1/p/2.html<br> //我们重新弄个类就ok了<br><br><br> //用法<br><br>             vendor('Page.Page#class');<br>             $params = array(<br>             'total_rows'=&gt;$count, #(必须)<br>             'method'    =&gt;'html', #(必须)<br>             'parameter' =&gt;'/list/'.$id.'/p/?.html',  #(必须)<br>             'now_page'  =&gt;$p,  #(必须)<br>             'list_rows' =&gt;30, #(可选) 默认为15<br>         );<br><br>             $page = new Core_Lib_Page($params);<br>         <br>             $this-&gt;assign("page",$page-&gt;show(1));<br><br><br><br><br><br><br><br><br> /**<br>  * 分页类<br>  * @author  xiaojiong &amp; 290747680@qq.com<br>  * @date 2011-08-17<br>  * <br>  * show(2)  1 ... 62 63 64 65 66 67 68 ... 150<br>  * 分页样式 <br>  * #page{font:12px/16px arial}<br>  * #page span{float:left;margin:0px 3px;}<br>  * #page a{float:left;margin:0 3px;border:1px solid #ddd;padding:3px 7px; text-decoration:none;color:#666}<br>  * #page a.now_page,#page a:hover{color:#fff;background:#05c}<br> */<br>  <br> class Core_Lib_Page<br> {<br>     public     $first_row;        //起始行数<br>  <br>     public     $list_rows;        //列表每页显示行数<br>      <br>     protected  $total_pages;      //总页数<br>  <br>     protected  $total_rows;       //总行数<br>      <br>     protected  $now_page;         //当前页数<br>      <br>     protected  $method  = 'defalut'; //处理情况 Ajax分页 Html分页(静态化时) 普通get方式 <br>      <br>     protected  $parameter = '';<br>      <br>     protected  $page_name;        //分页参数的名称<br>      <br>     protected  $ajax_func_name;<br>      <br>     public     $plus = 3;         //分页偏移量<br>      <br>     protected  $url;<br>      <br>      <br>     /**<br>      * 构造函数<br>      * @param unknown_type $data<br>      */<br>     public function __construct($data = array())<br>     {<br>         $this-&gt;total_rows = $data['total_rows'];<br>  <br>         $this-&gt;parameter         = !empty($data['parameter']) ? $data['parameter'] : '';<br>         $this-&gt;list_rows         = !empty($data['list_rows']) &amp;&amp; $data['list_rows']          $this-&gt;total_pages       = ceil($this-&gt;total_rows / $this-&gt;list_rows);<br>         $this-&gt;page_name         = !empty($data['page_name']) ? $data['page_name'] : 'p';<br>         $this-&gt;ajax_func_name    = !empty($data['ajax_func_name']) ? $data['ajax_func_name'] : '';<br>          <br>         $this-&gt;method           = !empty($data['method']) ? $data['method'] : '';<br>          <br>          <br>         /* 当前页面 */<br>         if(!empty($data['now_page']))<br>         {<br>             $this-&gt;now_page = intval($data['now_page']);<br>         }else{<br>             $this-&gt;now_page   = !empty($_GET[$this-&gt;page_name]) ? intval($_GET[$this-&gt;page_name]):1;<br>         }<br>         $this-&gt;now_page   = $this-&gt;now_page now_page;<br>      <br>          <br>         if(!empty($this-&gt;total_pages) &amp;&amp; $this-&gt;now_page &gt; $this-&gt;total_pages)<br>         {<br>             $this-&gt;now_page = $this-&gt;total_pages;<br>         }<br>         $this-&gt;first_row = $this-&gt;list_rows * ($this-&gt;now_page - 1);<br>     }   <br>      <br>     /**<br>      * 得到当前连接<br>      * @param $page<br>      * @param $text<br>      * @return string<br>      */<br>     protected function _get_link($page,$text)<br>     {<br>         switch ($this-&gt;method) {<br>             case 'ajax':<br>                 $parameter = '';<br>                 if($this-&gt;parameter)<br>                 {<br>                     $parameter = ','.$this-&gt;parameter;<br>                 }<br>                 return '<a>ajax_func_name . '(\'' . $page . '\''.$parameter.')" href="javascript:void(0)"&gt;' . $text . '</a>' . "\n";<br>             break;<br>              <br>             case 'html':<br>                 $url = str_replace('?', $page,$this-&gt;parameter);<br>                 return '<a>' . $text . '</a>' . "\n";<br>             break;<br>              <br>             default:<br>                 return '<a>_get_url($page) . '"&gt;' . $text . '</a>' . "\n";<br>             break;<br>         }<br>     }<br>      <br>      <br>     /**<br>      * 设置当前页面链接<br>      */<br>     protected function _set_url()<br>     {<br>         $url  =  $_SERVER['REQUEST_URI'].(strpos($_SERVER['REQUEST_URI'],'?')?'':"?").$this-&gt;parameter;<br>         $parse = parse_url($url);<br>         if(isset($parse['query'])) {<br>             parse_str($parse['query'],$params);<br>             unset($params[$this-&gt;page_name]);<br>             $url   =  $parse['path'].'?'.http_build_query($params);<br>         }<br>         if(!empty($params))<br>         {<br>             $url .= '&amp;';<br>         }<br>         $this-&gt;url = $url;<br>     }<br>      <br>     /**<br>      * 得到$page的url<br>      * @param $page 页面<br>      * @return string<br>      */<br>     protected function _get_url($page)<br>     {<br>         if($this-&gt;url === NULL)<br>         {<br>             $this-&gt;_set_url();   <br>         }<br>     //  $lable = strpos('&amp;', $this-&gt;url) === FALSE ? '' : '&amp;';<br>         return $this-&gt;url . $this-&gt;page_name . '=' . $page;<br>     }<br>      <br>      <br>     /**<br>      * 得到第一页<br>      * @return string<br>      */<br>     public function first_page($name = '第一页')<br>     {<br>         if($this-&gt;now_page &gt; 5)<br>         {<br>             return $this-&gt;_get_link('1', $name);<br>         }   <br>         return '';<br>     }<br>      <br>     /**<br>      * 最后一页<br>      * @param $name<br>      * @return string<br>      */<br>     public function last_page($name = '最后一页')<br>     {<br>         if($this-&gt;now_page total_pages - 5)<br>         {<br>             return $this-&gt;_get_link($this-&gt;total_pages, $name);<br>         }   <br>         return '';<br>     }  <br>      <br>     /**<br>      * 上一页<br>      * @return string<br>      */<br>     public function up_page($name = '上一页')<br>     {<br>         if($this-&gt;now_page != 1)<br>         {<br>             return $this-&gt;_get_link($this-&gt;now_page - 1, $name);<br>         }<br>         return '';<br>     }<br>      <br>     /**<br>      * 下一页<br>      * @return string<br>      */<br>     public function down_page($name = '下一页')<br>     {<br>         if($this-&gt;now_page total_pages)<br>         {<br>             return $this-&gt;_get_link($this-&gt;now_page + 1, $name);<br>         }<br>         return '';<br>     }<br>  <br>     /**<br>      * 分页样式输出<br>      * @param $param<br>      * @return string<br>      */<br>     public function show($param = 1)<br>     {<br>         if($this-&gt;total_rows          {<br>             return '';<br>         }<br>          <br>         $className = 'show_' . $param;<br>          <br>         $classNames = get_class_methods($this);<br>  <br>         if(in_array($className, $classNames))<br>         {<br>             return $this-&gt;$className();<br>         }<br>         return '';<br>     }<br>      <br>     protected function show_2()<br>     {<br>         if($this-&gt;total_pages != 1)<br>         {<br>             $return = '';<br>             $return .= $this-&gt;up_page('             for($i = 1;$itotal_pages;$i++)<br>             {<br>                 if($i == $this-&gt;now_page)<br>                 {<br>                     $return .= "<a>$i</a>\n";<br>                 }<br>                 else<br>                 {<br>                     if($this-&gt;now_page-$i&gt;=4 &amp;&amp; $i != 1)<br>                     {<br>                         $return .="<span>...</span>\n";<br>                         $i = $this-&gt;now_page-3;<br>                     }<br>                     else<br>                     {<br>                         if($i &gt;= $this-&gt;now_page+5 &amp;&amp; $i != $this-&gt;total_pages)<br>                         {<br>                             $return .="<span>...</span>\n"; <br>                             $i = $this-&gt;total_pages;<br>                         }<br>                         $return .= $this-&gt;_get_link($i, $i) . "\n";<br>                     }<br>                 }<br>             }<br>             $return .= $this-&gt;down_page('&gt;');<br>             return $return;<br>         }<br>     }<br>      <br>     protected function show_1()<br>     {<br>         $plus = $this-&gt;plus;<br>         if( $plus + $this-&gt;now_page &gt; $this-&gt;total_pages)<br>         {<br>             $begin = $this-&gt;total_pages - $plus * 2;<br>         }else{<br>             $begin = $this-&gt;now_page - $plus;<br>         }<br>          <br>         $begin = ($begin &gt;= 1) ? $begin : 1;<br>         $return = '';<br>         $return .= $this-&gt;first_page();<br>         $return .= $this-&gt;up_page();<br>         for ($i = $begin; $i          {<br>             if($i&gt;$this-&gt;total_pages)<br>             {<br>                 break;<br>             }<br>             if($i == $this-&gt;now_page)<br>             {<br>                 $return .= "<a>$i</a>\n";<br>             }<br>             else<br>             {<br>                 $return .= $this-&gt;_get_link($i, $i) . "\n";<br>             }<br>         }<br>         $return .= $this-&gt;down_page();<br>         $return .= $this-&gt;last_page();<br>         return $return;<br>     }<br>      <br>     protected function show_3()<br>     {<br>         $plus = $this-&gt;plus;<br>         if( $plus + $this-&gt;now_page &gt; $this-&gt;total_pages)<br>         {<br>             $begin = $this-&gt;total_pages - $plus * 2;<br>         }else{<br>             $begin = $this-&gt;now_page - $plus;<br>         }       <br>         $begin = ($begin &gt;= 1) ? $begin : 1;<br>         $return = '总计 ' .$this-&gt;total_rows. ' 个记录分为 ' .$this-&gt;total_pages. ' 页, 当前第 ' . $this-&gt;now_page . ' 页 ';<br>         $return .= ',每页 ';<br>         $return .= '<input>list_rows.'" id="pageSize" size="3"&gt; ';<br>         $return .= $this-&gt;first_page()."\n";<br>         $return .= $this-&gt;up_page()."\n"; <br>         $return .= $this-&gt;down_page()."\n";<br>         $return .= $this-&gt;last_page()."\n";<br>         $return .= '<select>ajax_func_name.'(this.value)" id="gotoPage"&gt;';<br>         <br>         for ($i = $begin;$i         {<br>             if($i&gt;$this-&gt;total_pages)<br>             {<br>                 break;<br>             }           <br>             if($i == $this-&gt;now_page)<br>             {<br>                 $return .= '<option>'.$i.'</option>';<br>             }<br>             else<br>             {<br>                 $return .= '<option>' .$i. '</option>';<br>             }           <br>         }<br>          $return .= '</select>';<br>         return $return;<br>     }<br> }<br><br><br><br><br><br><br><br>  //----------------------------------------------------------<br>  //声明: 本代码并非完美,也许存在不佳之处,请放肆吐槽!<br>  //作者: 小曾<br>  //扣扣: 839024615<br>  //网址: www.yun8888.net<br>  //关于我的ThinkPHP http://www.thinkphp.cn/u/87696.html<br>  //----------------------------------------------------------

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

路由优化大师
路由优化大师

路由优化大师是一款及简单的路由器设置管理软件,其主要功能是一键设置优化路由、屏广告、防蹭网、路由器全面检测及高级设置等,有需要的小伙伴快来保存下载体验吧!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门推荐
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号