• thinkphp分页封装


    php

    1.在think目录下新建文件Page.php

    2.写如分页封装

      1 <?php
      2 /**
      3  * Created by PhpStorm.
      4  * User: Administrator
      5  * Date: 2018/5/8
      6  * Time: 18:02
      7  */
      8 
      9 namespace think;
     10 use thinkDb;
     11 /**
     12  * 分页封装
     13  * */
     14 class Page
     15 {
     16     /**
     17      * 每页显示的条数
     18      * */
     19     private static $pageum = 5;
     20 
     21     /**
     22      * 每页显示的页码数
     23      * */
     24     private static $page_show = 5;
     25 
     26     /**
     27      * 当前页
     28      * */
     29     private static $page;
     30 
     31     /**
     32      * 跳转的链接 @@ $link @@
     33      * */
     34 
     35     /**
     36      * 数据库 @@ $surface @@
     37      * */
     38 
     39     public static function mypage($link,$surface){
     40         /*判断是否有页码传入*/
     41         if(empty($_GET['page'])){
     42             self::$page = 1;
     43         }else{
     44             self::$page = input('page');
     45         }
     46         /*查询当前页数据*/
     47         $sql = Db::query("select * from $surface order by time desc limit ".(self::$page-1)*self::$pageum.",". self::$pageum);
     48         /* 查询数据总条数 $to_page */
     49         $r = Db::table($surface)->select();
     50         $to_page = count($r);
     51         /* 查询总页数 $result*/
     52         $result = ceil($to_page/self::$pageum);
     53         /**
     54          * 打印 首页 上一页
     55          */
     56         $page_print = '';//$page_print的默认值为空
     57         $home = 1;//第一页(首页)
     58         if(self::$page<=1){
     59             $page_print .= "<a href=$link$home>首页</a>";
     60             $page_print .= "<a href=$link$home><span>上一页</span></a>";
     61         }else{
     62             $page_print .= "<a href=$link$home>首页</a>";
     63             $page_print .= "<a href=$link".(self::$page-1)."><span>上一页</span></a>";
     64         }
     65         /**
     66          * 定义偏移量
     67          */
     68         /*初始化默认值(判断显示页码数是基数还是偶数)*/
     69 
     70         if((self::$page_show%2)==0){
     71             $offset = (self::$page_show)/2;//偏移量
     72             $start = self::$page-($offset-1);//左偏移
     73             $end = self::$page+$offset;//右偏移
     74         }else{
     75             /*基数*/
     76             $offset = (self::$page_show-1)/2;//偏移量
     77             $start = self::$page-$offset;//左偏移
     78             $end = self::$page+$offset;//右偏移
     79         }
     80         /*当前页码为2时*/
     81         if(self::$page <= 2){
     82             $start = 1;
     83             $end = self::$page_show;
     84         }
     85         /*当页页码大于最大页码时*/
     86         if(self::$page >= $result-$offset){
     87             $start = $result-self::$page_show+1;
     88             $end = $result;
     89         }
     90         /*当前页码小于显示页码时*/
     91         if($result<self::$page_show){
     92             $start = 1;
     93             $end = $result;
     94         }
     95         /**
     96          * 循环打印页码
     97          */
     98         //如果最大页数大于要显示的页数的时候
     99         if($result<self::$page_show){
    100             for($i=1;$i<=$result;$i++){
    101                 if($i == self::$page){
    102                     $page_print .= "<a class='active'>{$i}</a>";
    103                 }else{
    104                     $page_print .= "<a href=$link$i>{$i}</a>";
    105                 }
    106             }
    107         }else{
    108             for($i=$start;$i<=$end;$i++){
    109                 if($i == self::$page){
    110                     $page_print .= "<a class='active'>{$i}</a>";
    111                 }else{
    112                     $page_print .= "<a href=$link$i>{$i}</a>";
    113                 }
    114             }
    115         }
    116         /**
    117          * 打印 尾页 下一页
    118          */
    119         if(self::$page >= $result){
    120             $page_print .= "<a href=$link$result><span>下一页</span></a>";
    121             $page_print .= "<a href=$link$result>尾页</a>";
    122         }else{
    123             $page_print .= "<a href=$link".(self::$page+1)."><span>下一页</span></a>";
    124             $page_print .= "<a href=$link$result>尾页</a>";
    125         }
    126         return array('page_print'=>$page_print,'to_page'=>$to_page,'sql'=>$sql);
    127     }
    128 }

    3.在想引用分页的PHP文件中引入

    use thinkPage;

    4.调用静态类传入地址和数据库

    $data = Page::mypage('地址后面接上?page=','数据库');

    5.取出数据

    $result = $data['sql'];

    6.取出分页

    $page = $data['page_print'];

    7.把数据传入前端页面展示出来

    $this->assign('result',$result);
    $this->assign('page',$page);

    html页面

    <!DOCTYPE html>
    <html lang="en">
        <head>
        </head>
        <body>
            {volist name="result" id="v"}
                数据
            {/volist}
            {$page}
        </body>
    </html>            

    最后根据所给类名设置css样式

    里面页码和显示数据条数都是可以自己设置

  • 相关阅读:
    Pytest框架之命令行参数2
    Pytest框架之命令行参数1
    [编程题] 二维数组中的查找
    [编程题]二叉树镜像
    补充基础:栈与队列模型
    6641. 【GDOI20205.20模拟】Sequence
    瞎讲:任意模数MTT
    瞎讲:FFT三次变二次优化
    小米oj 重拍数组求最大和
    小米oj 有多少个公差为2的等差数列
  • 原文地址:https://www.cnblogs.com/notesbooks/p/9019579.html
Copyright © 2020-2023  润新知