mrcln

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 \Think\Page($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;};

 

效果图:

分类:

技术点:

相关文章: