搜索
首页后端开发php教程结合 thinkPHP 分页写成自己分页类_PHP教程
结合 thinkPHP 分页写成自己分页类_PHP教程Jul 20, 2016 am 11:13 AM
firstheadernextthinkphp分页结合自己记录首页



<?<span php 
</span><span //</span><span  +----------------------------------------------------------------------
// | 参考  ThinkPHP 分页类改变而来
// +----------------------------------------------------------------------
// | 有两种样式:1、当面页码始终在中间。 2、当点到分页条两边的页码时,自动翻页(默认)。
// +----------------------------------------------------------------------
// | Author: zbseoag <zbsoeagy@qq.com>
// +----------------------------------------------------------------------
// $Id: page.class.php  2013-05-26 00:08:49</span>

 <span session_start</span>(); <span //</span><span 由于要记录用户是向前,还是向后翻页,故启用了session</span>

<span class</span><span  Page{

    </span><span public</span> <span $page</span>; <span //</span><span 当前页</span>
    <span public</span> <span $nextPage</span>; <span //</span><span 上一页</span>
    <span public</span> <span $prevPage</span>; <span //</span><span 下一页</span>
    <span public</span> <span $pageMax</span>; <span //</span><span 最大页</span>
    <span public</span> <span $startPage</span>; <span //</span><span 分页条起码</span>
    <span public</span> <span $endPage</span>;  <span //</span><span  分页条止码</span>
    <span public</span> <span $style</span>; <span //</span><span 样式:$style = mid</span>
    <span public</span> <span $parameter</span>;<span //</span><span 页数跳转时要带的参数</span>
    <span public</span> <span $varPage</span>;<span //</span><span 默认分页变量</span>
    <span public</span> <span $url</span> = <span null</span>;  <span //</span><span 指定url地址</span>
    
    <span protected</span> <span $config</span> = <span array</span><span (
        </span>'header'=>'条记录','prev'=>'上一页','next'=>'下一页','first'=>'首页','last'=>'尾页',
        'theme' => '%records% %header% %page%/%pageMax% 页  %firstPage%%prevPage%%linkPage%%nextPage%%lastPage%'<span 
    );
     
    </span><span /*</span><span *
     +----------------------------------------------------------
     * 架造函数
     +----------------------------------------------------------
     * @param  $records   总的记录数
     * @param  $pageSize  每页显示记录数
     * @param  $pageVal   分页跳转的参数
     * @param  $parameter 附加参数
     +----------------------------------------------------------
    </span><span */</span>
     
    <span function</span> __construct(<span $records</span>, <span $pageSize</span>, <span $pageVal</span> = 'p', <span $parameter</span> = <span null</span><span ){
         
        </span><span $this</span>->records = <span $records</span><span ;
        </span><span $this</span>->pageMax = <span ceil</span>(<span $records</span>/<span $pageSize</span><span );
        </span><span $this</span>->page= <span max</span>(<span intval</span>(<span $_GET</span>[<span $pageVal</span>]), 1); <span //</span><span 最小为1</span>
        <span $this</span>->page = <span min</span>(<span $this</span>->page, <span $this</span>->pageMax); <span //</span><span 最大为末页</span>
        <span $this</span>->nextPage = <span $this</span>->page + 1<span ;
        </span><span $this</span>->prevPage = <span $this</span>->page - 1<span ;
        </span><span $this</span>->varPage = <span $pageVal</span>; <span //</span><span 默认分页变量名</span>
        <span $this</span>->parameter = <span $parameter</span>; <span //</span><span 附加 url 参数</span>
<span     }
     
    </span><span /*</span><span *
     +----------------------------------------------------------
     * 设置样式
     +----------------------------------------------------------
     * @param  $name   内置参数名
     * @param  $value  给定参数值
     +----------------------------------------------------------
     </span><span */</span>
    <span function</span> setConfig(<span $name</span>, <span $value</span><span ){
        </span><span if</span>(<span isset</span>(<span $this</span>->config[<span $name</span><span ])){
            </span><span $this</span>->config[<span $name</span>] = <span $value</span><span ;
        }
    }
     
    </span><span /*</span><span *
     +----------------------------------------------------------
     * 分页显示输出
     +----------------------------------------------------------
     * @param  $length 分页条长度
     +----------------------------------------------------------
     * @param  $hide 是否适时隐藏上、下一页,比如:当前是第一页,则隐藏上一页
     +----------------------------------------------------------
     </span><span */</span>
    <span function</span> show(<span $length</span>, <span $hide</span> = <span false</span><span ){

        </span><span if</span>(0 == <span $this</span>->records) <span return</span> ''<span ;
        </span><span empty</span>(<span $this</span>->url)? <span $this</span>->url = <span $_SERVER</span>['REQUEST_URI'] : <span null</span><span ;
        </span><span $url</span> = <span $this</span>->url.(<span strpos</span>(<span $this</span>->url,'?')?'':'?').<span $this</span>-><span parameter;
        </span><span $parse</span> = <span parse_url</span>(<span $url</span><span );
         
        </span><span if</span>(<span isset</span>(<span $parse</span>['query'<span ])){
            </span><span parse_str</span>(<span $parse</span>['query'],<span $params</span><span );
            </span><span unset</span>(<span $params</span>[<span $this</span>-><span varPage]);
            </span><span $url</span> = <span $parse</span>['path'].'?'.<span http_build_query</span>(<span $params</span><span );
        }

        </span><span if</span>('mid' == <span $this</span>->style){ <span //</span><span 当前页居中</span>
            <span if</span>(<span $length</span> % 2 != 0<span  ){
                </span><span $midder</span> = <span ceil</span>(<span $length</span> / 2<span );
                </span><span $big_repair</span> = <span $midder</span> - 1 ;<span //</span><span 当上面以进一法取整,则这里为减1,反之为加1</span>
            }<span else</span><span {
                </span><span $big_repair</span> = <span $midder</span> = <span $length</span> / 2<span ;
            }
            </span><span $sml_repair</span> = <span $midder</span>- 1;  <span //</span><span 这是小补丁</span>
            <span $this</span>->startPage = (<span $this</span>->page  + <span $midder</span>) > <span $this</span>->pageMax ? <span $this</span>->pageMax  - <span $length</span> : <span $this</span>->page - <span $sml_repair</span><span ;
            </span><span $this</span>->endPage = (<span $this</span>->page < <span $midder</span>)? <span $length</span> : <span $this</span>->page + <span $big_repair</span><span ;
        }</span><span else</span>{ <span //</span><span 最后一页翻页</span>
            <span $this</span>->startPage = (<span $this</span>->page >= <span $length</span>)? <span $_SESSION</span>['startPage'] : 1<span ;
            </span><span $this</span>->endPage  = <span $this</span>->startPage + <span $length</span> - 1<span ;
             
            </span><span $this</span>->lastPage =  <span isset</span>(<span $_SESSION</span>['lastPage'])? <span $_SESSION</span>['lastPage'] : 1; <span //</span><span 上次的页码</span>
            <span $_SESSION</span>['lastPage'] = <span $this</span>->page;  <span //</span><span 保存当前页</span>
             
            <span if</span>(<span $this</span>->lastPage < <span $this</span>->page){ <span //</span><span 后翻页</span>
                <span if</span>(<span $this</span>->page >= <span $this</span>-><span endPage){
                    </span><span $this</span>->startPage = <span $_SESSION</span>['startPage'] = <span $this</span>-><span page;
                    </span><span $this</span>->endPage = <span $this</span>->startPage + <span $length</span> -1<span ;
                }
            }</span><span elseif</span>(<span $this</span>->lastPage == <span $this</span>->page){<span //</span><span 切换</span>
                <span if</span>(<span $this</span>->page == <span $this</span>-><span endPage){
                    </span><span $this</span>->startPage = <span $_SESSION</span>['startPage'] = <span $this</span>-><span page;
                    </span><span $this</span>->endPage = <span $this</span>->startPage + <span $length</span> -1<span ;
                }</span><span else</span><span {
                    </span><span $this</span>->startPage = <span $_SESSION</span>['startPage'] = <span $this</span>->page - <span $length</span> + 1<span ;
                    </span><span $this</span>->endPage = <span $this</span>->startPage + <span $length</span> -1<span ;
                }
            }</span><span else</span>{<span //</span><span 前翻页</span>
                <span if</span>(<span $this</span>->page == <span $this</span>-><span startPage ){
                    </span><span $this</span>->startPage = <span $_SESSION</span>['startPage'] = <span $this</span>->page - <span $length</span> + 1<span ;
                    </span><span $this</span>->endPage = <span $this</span>->startPage + <span $length</span> -1<span ;
                }
            }
            </span><span //</span><span echo '开始页码:'. $this->startPage.'<br/>';
            //echo '上次页码:'. $this->lastPage.'<br/>';</span>
<span         }
        </span><span //</span><span 修正一下</span>
        <span $this</span>->startPage = <span min</span>(<span $this</span>->pageMax - <span $length</span> + 1, <span $this</span>->startPage); <span //</span><span 最大</span>
        <span $this</span>->startPage = <span max</span>(<span $this</span>->startPage, 1);<span //</span><span 最小为第一页(先求最大,再求最小)</span>
         
        <span $this</span>->endPage = <span $this</span>->startPage + <span $length</span> -1<span ;
        </span><span $this</span>->endPage = <span min</span>(<span $this</span>->pageMax, <span $this</span>->endPage); <span //</span><span 最大为末页</span>
         
        <span $_SESSION</span>['startPage'] = <span $this</span>->startPage; <span //</span><span 修正之后,重新保存
         
        //echo '开始页码:'. $this->startPage.'<br/>';
        //echo '上次页码:'. $this->lastPage.'<br/>';</span>
         
        <span if</span>(<span $this</span>->page <= 1){<span //</span><span 如果已经是首页</span>
            <span $firstPage</span> = '<span>'.<span $this</span>->config['first'].'</span>'<span ;
            </span><span $prevPage</span> = '<span>'.<span $this</span>->config['prev'].'</span>'<span ;
        }</span><span else</span><span {
            </span><span $firstPage</span> = "<span><a href='<span $url</span>&<span $this</span>->varPage=1'>".<span $this</span>->config['first'].'</a>'<span ;
            </span><span $prevPage</span> = "<span><a href='<span $url</span>&<span $this</span>->varPage=<span $this</span>->prevPage'>".<span $this</span>->config['prev'].'</a>'<span ;
        }
        
        </span><span if</span>(<span $this</span>->page >= <span $this</span>->pageMax){ <span //</span><span 如果已经是末页</span>
            <span $nextPage</span> = '<span>'.<span $this</span>->config['next'].'</span>'<span ;
            </span><span $lastPage</span> = '<span>'.<span $this</span>->config['last'].'</span>'<span ;
        }</span><span else</span><span {
            </span><span $lastPage</span> = "<a href='<span $url</span>&<span $this</span>->varPage=<span $this</span>->pageMax'>".<span $this</span>->config['last'].'</a>'<span ;
            </span><span $nextPage</span> = "<a href='<span $url</span>&<span $this</span>->varPage=<span $this</span>->nextPage'>".<span $this</span>->config['next'].'</a>'<span ;
        }
        
        </span><span if</span>(<span $hide</span>){ <span //</span><span 如果是隐藏模式</span>
            (<span $this</span>->nextPage >= <span $this</span>->pageMax)? <span $nextPage</span> = '' : <span null</span><span ;
            (</span><span $this</span>->prevPage < 1)? <span $prevPage</span> = '' : <span null</span><span ;
        }

        </span><span for</span>(<span $i</span> = <span $this</span>->startPage; <span $i</span> <= <span $this</span>->endPage; <span $i</span>++<span ){
            </span><span if</span> (<span $this</span>->page == <span $i</span><span )
                </span><span $linkPage</span> .= "<a class='current' href='<span $url</span>&<span $this</span>->varPage=<span $i</span>'><span $i</span></a>"<span ;
            </span><span else</span>
                <span $linkPage</span> .= "<a href='<span $url</span>&<span $this</span>->varPage=<span $i</span>'><span $i</span></a>"<span ;
        }
        </span><span $search</span> = <span array</span>('%records%','%header%','%page%','%pageMax%','%firstPage%','%prevPage%','%linkPage%','%nextPage%','%lastPage%'<span );
        </span><span $replace</span> = <span array</span>(<span $this</span>->records,<span $this</span>->config['header'],<span $this</span>->page,<span $this</span>->pageMax,<span $firstPage</span>,<span $prevPage</span>,<span $linkPage</span>,<span $nextPage</span>,<span $lastPage</span><span );
        </span><span $pageStr</span> = <span str_replace</span>(<span $search</span>, <span $replace</span>, <span $this</span>->config['theme'<span ]);

        </span><span return</span> <span $pageStr</span><span ;
    }
     
}
</span><span $page</span> = <span new</span> Page(340, 10<span );
</span><span $theme</span> = '%records% %header% %page%/%pageMax% 页  %firstPage%%prevPage%%linkPage%%nextPage%%lastPage%'<span ;
</span><span $page</span>->setConfig('theme',<span $theme</span>); <span //</span><span 可以修改样式,比如:当不要末页是,可以删除 %lastPage%,或者改变位置次序</span>
<span $page</span>->setConfig('last','末页'); <span //</span><span 可自定义文字 : 'header'='条记录','prev'='上一页','next'='下一页','first'='首页','last'='尾页'</span>
<span $page</span>->url = 'http://localhost/test.php'<span ;
</span><span echo</span> <span $page</span>->show(10<span );

</span>?>
 <style><span 
a</span>,span{ margin:<span 2px 5px;}
</span>.<span current</span>{ color:<span red;}
</span></style>

 



 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/440334.htmlTechArticle? (); ; ; ; ; ; ; ; ; ; = ; = 'header'='条记录','prev'='上一页','next'='下一页','first'='首页','last'='尾页', 'theme' = '%records% %header% %page%/%pageMax% 页 %first...
声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
thinkphp是不是国产框架thinkphp是不是国产框架Sep 26, 2022 pm 05:11 PM

thinkphp是国产框架。ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。

一起聊聊thinkphp6使用think-queue实现普通队列和延迟队列一起聊聊thinkphp6使用think-queue实现普通队列和延迟队列Apr 20, 2022 pm 01:07 PM

本篇文章给大家带来了关于thinkphp的相关知识,其中主要介绍了关于使用think-queue来实现普通队列和延迟队列的相关内容,think-queue是thinkphp官方提供的一个消息队列服务,下面一起来看一下,希望对大家有帮助。

Swoole与Laravel框架的完美结合Swoole与Laravel框架的完美结合Jun 13, 2023 pm 08:36 PM

随着互联网的快速发展,Web应用程序的需求也越来越大。对于Web开发者而言,选择一款优秀的Web应用框架是必不可少的。在PHP领域,Laravel已经成为了一款备受欢迎的Web应用框架。但是,对于高并发、高负载的场景,PHP的传统CGI模式下的Web应用程序并不太适合。这时,一个高性能的网络通信框架就显得尤为重要,而Swoole就是一个非常优

thinkphp的mvc分别指什么thinkphp的mvc分别指什么Jun 21, 2022 am 11:11 AM

thinkphp基于的mvc分别是指:1、m是model的缩写,表示模型,用于数据处理;2、v是view的缩写,表示视图,由View类和模板文件组成;3、c是controller的缩写,表示控制器,用于逻辑处理。mvc设计模式是一种编程思想,是一种将应用程序的逻辑层和表现层进行分离的方法。

实例详解thinkphp6使用jwt认证实例详解thinkphp6使用jwt认证Jun 24, 2022 pm 12:57 PM

本篇文章给大家带来了关于thinkphp的相关知识,其中主要介绍了使用jwt认证的问题,下面一起来看一下,希望对大家有帮助。

thinkphp扩展插件有哪些thinkphp扩展插件有哪些Jun 13, 2022 pm 05:45 PM

thinkphp扩展有:1、think-migration,是一种数据库迁移工具;2、think-orm,是一种ORM类库扩展;3、think-oracle,是一种Oracle驱动扩展;4、think-mongo,一种MongoDb扩展;5、think-soar,一种SQL语句优化扩展;6、porter,一种数据库管理工具;7、tp-jwt-auth,一个jwt身份验证扩展包。

一文教你ThinkPHP使用think-queue实现redis消息队列一文教你ThinkPHP使用think-queue实现redis消息队列Jun 28, 2022 pm 03:33 PM

本篇文章给大家带来了关于ThinkPHP的相关知识,其中主要整理了使用think-queue实现redis消息队列的相关问题,下面一起来看一下,希望对大家有帮助。

thinkphp 怎么查询库是否存在thinkphp 怎么查询库是否存在Dec 05, 2022 am 09:40 AM

thinkphp查询库是否存在的方法:1、打开相应的tp文件;2、通过“ $isTable=db()->query('SHOW TABLES LIKE '."'".$data['table_name']."'");if($isTable){...}else{...}”方式验证表是否存在即可。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),