thinkphp实现根据页码从数据中获取数据,并实现分页



使用也很简单,在控制器中实例化page类,并且调用它的方法,在HTML直接输出变量$pagelist就可以了。




下面附上我自己写的分页代码

一、前端代码

[html]  view plain  copy
  1. <html>  
  2. <head>  
  3. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  4. <style>  
  5. .show_page a{  
  6.     height:32px;  
  7.     width:30px;  
  8.     border:1px solid #DCDCDC;  
  9.     background-color:#F3F2F2;  
  10.     text-decoration:none;  
  11.     text-align:center;  
  12.     cursor:pointer;  
  13.     border-collapse:collapse;  
  14.     font-size:14px;  
  15. }  
  16.   
  17. span{  
  18.     height:32px;  
  19.     width:30px;  
  20.     border:1px solid #DCDCDC;  
  21.     background-color:#F3F2F2;  
  22.     text-align:center;  
  23.     border-collapse:collapse;  
  24. }  
  25. span.current,.show_page a:hover{  
  26.     border:1px solid #F3F2F2;  
  27.     background-color:#FFFFFF;  
  28. }  
  29. .disable{  
  30.     border:#eee 1px solid;  
  31.     color:#ddd;  
  32. }  
  33. </style>  
  34. </head>  
  35. <body>  
  36.     {$page_banner}  
  37. </body>  
  38. </html>  



二、后端代码

[php]  view plain  copy
  1. //传入页码  
  2.     public function forPage(){  
  3.         $page = I('get.page',1);//初始值为1  
  4.         $allMessages= D('Message')->getAll(0,$page);  
  5.         $allMessages = $this->change($allMessages);  
  6.         $number = D("message")->getcount();  
  7.         $number = ceil($number['number']/1);//向上取整  
  8.         $show_page = 3;//显示页码数  
  9.         $page_offset = ($show_page-1)/2;  
  10.         $page_banner = "<div class='show_page'>";  
  11.         if($page>1){  
  12.             $page_banner .=" <a href='".$_SERVER['PHP_SELF']."?page=".($page-1)."'><</a>";  
  13.         }else{  
  14.             $page_banner .= "<span class='disable'><</span>";      
  15.         }  
  16.         $start = 1;  
  17.         $end = $number;  
  18.         if($number > $show_page){  
  19.             //头部  
  20.             if($page > $page_offset+1){  
  21.                 $page_banner .="<span class='disable'>...</span>";  
  22.             }  
  23.             if($page > $page_offset){  
  24.                 $start = $page-$page_offset;  
  25.                 $end = $number>$page+$page_offset?$page+$page_offset:$number;  
  26.             }else{  
  27.                 $start = 1;  
  28.                 $end = $number>$show_page?$show_page:$number;  
  29.             }  
  30.             //尾部省略  
  31.             if($page+$page_offset > $number){  
  32.                 $start = $start-($page+$page_offset-$end);  
  33.             }  
  34.         }     
  35.         for($i=$start;$i<=$end;$i++){  
  36.             if($i == $page){  
  37.                 $page_banner .= "<span class='current'>{$i}</span>";  
  38.             }else{  
  39.                 $page_banner .= "<a href='".$_SERVER['PHP_SELF']."?page=".($i)."'>{$i}</a>";  
  40.             }  
  41.         }  
  42.         if($show_page<$number && $page<$number-$page_offset){  
  43.             $page_banner .= "<span class='disable'>...</span>";  
  44.         }  
  45.         if($page < $number){  
  46.             $page_banner .="<a href='".$_SERVER['PHP_SELF']."?page=".($page+1)."'>></a>";  
  47.         }else{  
  48.             $page_banner .= "<span class='disable'>></span>";  
  49.         }  
  50.         $this->assign('number',$number);//总页数  
  51.         $this->assign('page',$page);//当前页  
  52.         $this->assign('page_banner',$page_banner);  
  53.         $this->display();  
  54.     }  

三、sql语言

[html]  view plain  copy
  1. //获取留言(按时间先后顺序排列)  
  2.     public function getAll($page){  
  3.         $where["comment_id"] = 0;//查找所有comment_id为0的数据  
  4.         $allMessages = $this->relation('user')->where($where)->order('time desc')->page("$page,6")->select();  
  5.         if(empty($allMessages)){  
  6.             return array();  
  7.         }  
  8.         return $allMessages;  
  9.     }  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值