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

thinkphp简洁、美观、靠谱的分页类

php中文网
发布: 2016-06-07 11:35:18
原创
1429人浏览过

这个分页类是在thinkphp框架内置的分页类的基础上修改而来;
废话不多说先上图预览下;即本博客的分页;
thinkphp简洁、美观、靠谱的分页类
白俊遥博客

这个分页类是在thinkphp框架内置的分页类的基础上修改而来;

原分页类的一些设计,在实际运用中感觉不是很方便;

1:只有一页内容时不显示分页;

2:原分页类在当前页是第一页和最后一页的时候,不显示第一页和最后一页的按钮;
thinkphp简洁、美观、靠谱的分页类
白俊遥博客

3:分页数比较少时不显示首页和末页按钮;

4:包裹分页内容的父级div没有class;

针对以上问题逐一进行了修改成如下;

1:如果没有数据不显示分页,如果有一页及以上内容即显示分页;

2:默认就显示第一页和最后一页按钮,但是在当前页是第一页和最后一页的时候按钮点击无效果;

3:默认就显示首页和末页按钮;

4:为包裹分页内容的父级div添加名为page的class;

5:显示总共查出的内容条数;


示例环境:thinkphp3.2.3;

分页类目录:/Thinkphp/Library/Org/Bjy/Page.class.php

分页类代码如下:<?php <br /> // +----------------------------------------------------------------------<br> // | ThinkPHP [ WE CAN DO IT JUST THINK IT ]<br> // +----------------------------------------------------------------------<br> // | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.<br> // +----------------------------------------------------------------------<br> // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )<br> // +----------------------------------------------------------------------<br> // | Author: 麦当苗儿 <zuojiazi> <http:><br> // +----------------------------------------------------------------------<br> /*<br>  * PHP分页类<br>  * 修改者:白俊遥<br>  * 日  期:2015.5.10<br>  * 邮  箱:baijunyao@baijunyao.com<br>  * 博  客:http://www.baijunyao.com<br>  */<br> namespace Org\Bjy;<br><br> class Page{<br>     public $firstRow; // 起始行数<br>     public $listRows; // 列表每页显示行数<br>     public $parameter; // 分页跳转时要带的参数<br>     public $totalRows; // 总行数<br>     public $totalPages; // 分页总页面数<br>     public $rollPage   = 5;// 分页栏每页显示的页数<br>     public $lastSuffix = true; // 最后一页是否显示总页数<br><br>     private $p       = 'p'; //分页参数名<br>     private $url     = ''; //当前链接URL<br>     private $nowPage = 1;<br><br>     // 分页显示定制<br>     private $config  = array(<br>         'header' =&gt; '<span>共 %TOTAL_ROW% 条记录</span>',<br>         'first'   =&gt; '首页',<br>         'prev'   =&gt; '上一页',<br>         'next'   =&gt; '下一页',<br>         'last'   =&gt; '末页',<br>         'theme'  =&gt; '%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END% %HEADER%',<br>     );<br><br>     /**<br>      * 架构函数<br>      * @param array $totalRows  总的记录数<br>      * @param array $listRows  每页显示记录数<br>      * @param array $parameter  分页跳转的参数<br>      */<br>     public function __construct($totalRows, $listRows=20, $parameter = array()) {<br>         C('VAR_PAGE') &amp;&amp; $this-&gt;p = C('VAR_PAGE'); //设置分页参数名称<br>         /* 基础设置 */<br>         $this-&gt;totalRows  = $totalRows; //设置总记录数<br>         $this-&gt;listRows   = $listRows;  //设置每页显示行数<br>         $this-&gt;parameter  = empty($parameter) ? $_GET : $parameter;<br>         $this-&gt;nowPage    = empty($_GET[$this-&gt;p]) ? 1 : intval($_GET[$this-&gt;p]);<br>         $this-&gt;nowPage    = $this-&gt;nowPage&gt;0 ? $this-&gt;nowPage : 1;<br>         $this-&gt;firstRow   = $this-&gt;listRows * ($this-&gt;nowPage - 1);<br>     }<br><br>     /**<br>      * 定制分页链接设置<br>      * @param string $name  设置名称<br>      * @param string $value 设置值<br>      */<br>     public function setConfig($name,$value) {<br>         if(isset($this-&gt;config[$name])) {<br>             $this-&gt;config[$name] = $value;<br>         }<br>     }<br><br>     /**<br>      * 生成链接URL<br>      * @param  integer $page 页码<br>      * @return string<br>      */<br>     private function url($page){<br>         return str_replace(urlencode('[PAGE]'), $page, $this-&gt;url);<br>     }<br><br>     /**<br>      * 组装分页链接<br>      * @return string<br>      */<br>     public function show() {<br>         if(0 == $this-&gt;totalRows) return '';<br><br>         /* 生成URL */<br>         $this-&gt;parameter[$this-&gt;p] = '[PAGE]';<br>         $this-&gt;url = U(ACTION_NAME, $this-&gt;parameter);<br>         /* 计算分页信息 */<br>         $this-&gt;totalPages = ceil($this-&gt;totalRows / $this-&gt;listRows); //总页数<br>         if(!empty($this-&gt;totalPages) &amp;&amp; $this-&gt;nowPage &gt; $this-&gt;totalPages) {<br>             $this-&gt;nowPage = $this-&gt;totalPages;<br>         }<br><br>         /* 计算分页零时变量 */<br>         $now_cool_page      = $this-&gt;rollPage/2;<br>         $now_cool_page_ceil = ceil($now_cool_page);<br><br>         //上一页<br>         $up_row  = $this-&gt;nowPage - 1;<br>         $up_page = $up_row &gt; 0 ? '<a>url($up_row) . '"&gt;' . $this-&gt;config['prev'] . '</a>' : '<a>' . $this-&gt;config['prev'] . '</a>';<br><br>         //下一页<br>         $down_row  = $this-&gt;nowPage + 1;<br>         $down_page = ($down_row totalPages) ? '<a>url($down_row) . '"&gt;' . $this-&gt;config['next'] . '</a>' : '<a>' . $this-&gt;config['next'] . '</a>';<br><br>         //第一页<br>         $the_first = '<a>url(1) . '"&gt;' . $this-&gt;config['first'] . '</a>';<br><br>         //最后一页<br>         $the_end = '<a>url($this-&gt;totalPages) . '"&gt;' . $this-&gt;config['last'] . '</a>';<br><br>         //数字连接<br>         $link_page = "";<br>         for($i = 1; $i rollPage; $i++){<br>             if(($this-&gt;nowPage - $now_cool_page)                  $page = $i;<br>             }elseif(($this-&gt;nowPage + $now_cool_page - 1) &gt;= $this-&gt;totalPages){<br>                 $page = $this-&gt;totalPages - $this-&gt;rollPage + $i;<br>             }else{<br>                 $page = $this-&gt;nowPage - $now_cool_page_ceil + $i;<br>             }<br>             if ($page&gt;0) {<br>                 if($page != $this-&gt;nowPage){<br>                     if($page totalPages){<br>                         $link_page .= '<a>url($page) . '"&gt;' . $page . '</a>';<br>                     }else{<br>                         break;<br>                     }<br>                 }else{<br>                     $link_page .= '<span>' . $page . '</span>';<br>                 }                <br>             }<br><br>         }<br><br>         //替换分页内容<br>         $page_str = str_replace(<br>             array('%HEADER%', '%NOW_PAGE%', '%UP_PAGE%', '%DOWN_PAGE%', '%FIRST%', '%LINK_PAGE%', '%END%', '%TOTAL_ROW%', '%TOTAL_PAGE%'),<br>             array($this-&gt;config['header'], $this-&gt;nowPage, $up_page, $down_page, $the_first, $link_page, $the_end, $this-&gt;totalRows, $this-&gt;totalPages),<br>             $this-&gt;config['theme']);<br>         return '<div>'.$page_str.'</div>';<br>     }<br> }</http:></zuojiazi>分页类调用:    $count=$this-&gt;where($where)-&gt;count();<br>     $page=new \Org\Bjy\Page($count,$limit);<br>     $list=$this-&gt;where($where)-&gt;order('addtime desc')-&gt;limit($page-&gt;firstRow.','.$page-&gt;listRows)-&gt;select();<br>     $show=$page-&gt;show();分页类css.b-page {<br>     background:#fff;<br>     box-shadow:0 1px 2px 0 #e2e2e2<br> }<br> .b-page .page {<br>     width:100%;<br>     padding:30px 15px;<br>     background:#fff;<br>     text-align:center;<br>     overflow:hidden<br> }<br> .b-page .page .first,.b-page .page .prev,.b-page .page .current,.b-page .page .num,.b-page .page .current,.b-page .page .next,.b-page .page .end {<br>     padding:8px 16px;<br>     margin:0 5px;<br>     display:inline-block;<br>     color:#008cba;<br>     border:1px solid #f2f2f2;<br>     border-radius:5px<br> }<br> .b-page .page .first:hover,.b-page .page .prev:hover,.b-page .page .current:hover,.b-page .page .num:hover,.b-page .page .current:hover,.b-page .page .next:hover,.b-page .page .end:hover {<br>     text-decoration:none;<br>     background:#f8f5f5<br> }<br> .b-page .page .current {<br>     background-color:#008cba;<br>     color:#fff;<br>     border-radius:5px;<br>     border:1px solid #008cba<br> }<br> .b-page .page .current:hover {<br>     text-decoration:none;<br>     background:#008cba<br> }分页类的使用方法和原thinkphp相同;具体参考:thinkphp手册-数据分页http://document.thinkphp.cn/manual_3_2.html#data_page

本文为白俊遥原创文章,转载无需和我联系,但请注明来自白俊遥博客http://www.baijunyao.com/http://www.baijunyao.com

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

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

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

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