zoukankan      html  css  js  c++  java
  • thinkphp自定义分页效果

    TP自带了一个分页函数,挺方便使用的。

    下面是我的使用方法:

     1 /*****************分页显示start*************************/
     2            $arr_page=$this->page($user,1);
     3            $show=$arr_page['show'];
     4            $Page=$arr_page['Page'];
     5         $article = $user->order('now')->limit($Page->firstRow.','.$Page->listRows)->select();
     6         if(!empty($_POST['seach_classify'])){
     7             $seach_classify=$_POST['seach_classify'];
     8             $arr_page=$this->page($user,1,"classify='$seach_classify'");
     9                $show=$arr_page['show'];
    10                $Page=$arr_page['Page'];
    11                $Page->setconfig("prev","上");
    12 
    13             dump($Page);     
    14             $article=$user->order("now")->limit($Page->first.','.$Page->prev)->where("classify='$seach_classify'")->select();
    15         }
    16         //dump($list);
    17 /*****************分页显示end************************/

    结合自己包装的一个分页函数:

     public function page($db,$num,$where){
            $count = $db->where($where)->count();// 
            $Page       = new ThinkPage($count,$num);// 实例化分页类 传入总记录数和每页显示的记录数(25)
            $show       = $Page->show();// 分页显示输出
            return $arr_page = array(
                "show"=>$show,
                "Page"=>$Page,
                "count"=>$count,
                );
            
        }

    即可实现查询和按条件查询分页,这里的按条件查询分页,虽然能差出数据,但再点击查询的分页链接就返回原来的无条件查询了,

    我这里判断的是$_POST['seach_classify']不为空才查询,不过可以理解,如果点击了查询分页链接,页面会刷新,$_POST['seach_classify']就返回是空的了,

    现在还想不出解决办法,望高手解答!

    下面是我自定义的分页效果制作:

    需要修改底层的thinkphp/Library/Think/Page.class.php,修改如下:

    1 // 分页显示定制
    2     private $config  = array(
    3         'header' => '<span class="rows">共 %TOTAL_ROW% 篇文章</span>',//可以直接修改这里,也可以在你的方法里面设置$page->setconfig("header","篇文章")
    4         'prev'   => '上一页',//这里同上
    5         'next'   => '下一页',
    6         'first'  => '返回首页',
    7         'last'   => '...%TOTAL_PAGE%',
    8         'theme'  => '%FIRST% %LINK_PAGE% %HEADER% %END%',//这里自定义你的分页输出内容,内容在下面
    9     );
    1  //替换分页内容
    2         $page_str = str_replace(
    3             array('%HEADER%', '%NOW_PAGE%', '%UP_PAGE%', '%DOWN_PAGE%', '%FIRST%', '%LINK_PAGE%', '%END%', '%TOTAL_ROW%', ),//这里是自定义所需内容
    4             array($this->config['header'], $this->nowPage, $up_page, $down_page, $the_first, $link_page, $the_end, $this->totalRows, $this->totalPages),
    5             $this->config['theme']);
    6         return "{$page_str}";

    下面是效果自定义:

     1 //数字连接
     2         $link_page = "";
     3         for($i = 1; $i <= $this->rollPage; $i++){
     4             if(($this->nowPage - $now_cool_page) <= 0 ){
     5                 $page = $i;
     6             }elseif(($this->nowPage + $now_cool_page - 1) >= $this->totalPages){
     7                 $page = $this->totalPages - $this->rollPage + $i;
     8             }else{
     9                 $page = $this->nowPage - $now_cool_page_ceil + $i;
    10             }
    11             if($page > 0 && $page != $this->nowPage){
    12 
    13                 if($page <= $this->totalPages){
    14                     $link_page .= '<a class="num" href="' . $this->url($page) . '"><div>' . $page . '</div></a>';//这里的div我自己加的,以便用css定制效果!css见下面
    15                 }else{
    16                     break;
    17                 }
    18             }else{
    19                 if($page > 0 && $this->totalPages != 1){
    20                     $link_page .= '<span class="current"><div id="nowPage">' . $page . '</div></span>';
    21                 }
    22             }
    23         }

    css:

    div.fenye{background:; text-align:center; width:800px;margin:15px -400px 0 0; right:50%; position:absolute; box-shadow:0 0 5px #888;}
    div.fenye div{transition:background 0.5s,box-shadow 1s; text-align:center; width:40px; height:25px; float:left;color:#FFF}
    div.fenye div:hover{background:#FFF; text-align:center; float:left; color:#000;box-shadow:0 0px 15px #FFF;}
    div#nowPage{box-shadow:0 0px 15px #FFF;color:#000;background:#FFF;}
    span.rows{color:#666;};

    效果图:

  • 相关阅读:
    Ubuntu 下安装QT
    Ubuntu下配置Samba服务器
    二进制、八进制、十进制、十六进制之间转换
    Oracle_创建和管理表
    Oracle_数据处理
    单例模式
    01.DesignParttern设计模式,简单工厂,工厂方法,抽象工厂三大工厂的区别与联系
    MAC系统中的轻量级图像浏览器Lyn1.9
    MAC系统的绝佳截图工具Snipaste
    MAC系统的绝佳截图工具Snipaste
  • 原文地址:https://www.cnblogs.com/mrcln/p/3888947.html
Copyright © 2011-2022 走看看