php教程

超轻量级php框架startmvc

thinkPHP3.2.3结合Laypage实现的分页功能示例

更新时间:2020-03-28 01:00:18 作者:startmvc
本文实例讲述了thinkPHP3.2.3结合Laypage实现的分页功能。分享给大家供大家参考,具体如下:

本文实例讲述了thinkPHP3.2.3结合Laypage实现的分页功能。分享给大家供大家参考,具体如下:

控制器


<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
 /**
 *@brief 查询
 ****/
 public function index(){
 $choose = I('choose','-6');
 $c['easy_hard'] = $choose;
 $type=I('typeid','');
 $nowpage=I('page',1);
 if($type == '')
 {
 if($choose == -6)
 {
 $totalpage=ceil((D('data')->count())/10);
 $infos=D('data')->limit(($nowpage-1)*10,10)->select();
 }else{
 $totalpage=ceil((D('data')->where($c)->count())/10);
 $infos=D('data')->where($c)->limit(($nowpage-1)*10,10)->select();
 }
 }else{
 if($choose == -6)
 {
 $map['data'] = array('like',"%$type%");
 $totalpage=ceil((D('data')->where($map)->count())/10);
 $infos=D('data')->where($map)->limit(($nowpage-1)*10,10)->select();
 }else{
 $map['data'] = array('like',"%$type%");
 $totalpage=ceil((D('data')->where($map)->where($c)->count())/10);
 $infos=D('data')->where($map)->where($c)->limit(($nowpage-1)*10,10)->select();
 }
 }
 $this->assign('type',$type);
 $this->assign('choose',$choose);
 $this->assign("totalpage",$totalpage);
 $this->assign("infos",$infos);
 $this -> display();
 }
}

视图层


<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Think Demo</title>
 <script type="text/javascript" src="__PUBLIC__/jquery-1.11.1/jquery.min.js"></script>
 <script type="text/javascript" src="__PUBLIC__/jquery-1.11.1/jquery.js"></script>
 <script type="text/javascript" src="__PUBLIC__/layer/layer.js"></script>
 <script type="text/javascript" src="__PUBLIC__/laypage/laypage.js"></script>
</head>
<body>
<div>
 <select name="" id="slc1" onchange="return choose()">
 <option value="-6" <if condition="$choose eq -6 "> selected </if> >全部</option>
 <option value="0" <if condition="$choose eq 0 "> selected </if> >简单</option>
 <option value="1" <if condition="$choose eq 1 "> selected </if> >一般</option>
 </select>
 <input type="text" value="<if condition="$type neq '' "> {$type} </if>" id="type"><button id="sou">搜索</button>
</div>
<br>
 <table border="1" width="500" height="150" >
 <tr>
 <th>ID</th>
 <th>语言</th>
 <th>难易程度</th>
 <th>操作</th>
 </tr>
 <volist name="infos" id="vo">
 <tr>
 <th>{$vo.id}</th>
 <th>{$vo.data}</th>
 <th>
 <if condition="$vo.easy_hard eq '0'">简单
 <else />一般
 </if>
 </th>
 <th>
 <a href="javascript:;" rel="external nofollow" rel="external nofollow" onclick="return del({$vo.id});">删除</a>
 <a href="javascript:;" rel="external nofollow" rel="external nofollow" onclick="return edit({$vo.id});">修改</a>
 </th>
 </tr>
 </volist>
 </table>
 <div style="margin-top:15px; text-align:center;" id="page11"></div>
 <button onclick="return add_()"> 添加 </button> <br />
<script type="text/javascript">
 function choose()
 {
 var type=$("#type").val();
 var checkValue=$("#slc1").val();
 window.location.href="?typeid=" rel="external nofollow" rel="external nofollow" +type+"&choose="+checkValue;
 }
 $("#sou").bind("click",function(event){
 var type=$("#type").val();//获取假设的搜索条件值
 var checkValue=$("#slc1").val();
 window.location.href="?typeid=" rel="external nofollow" rel="external nofollow" +type+'&choose='+checkValue;
 });
 $(function(){
 laypage({
 cont: 'page11',
 pages: {$totalpage}, //假设我们获取到的是18(后端计算完总页数后将总页数值传过来,放在这里即可(类似{$totalpage})).
 curr: function(){ //通过url获取当前页,也可以同上(pages)方式获取
 var page = location.search.match(/page=(\d+)/);
 return page ? page[1] : 1;//如果没有页数显示时,默认是第一页
 }(),
 jump: function(e, first){ //触发分页后的回调
 if(!first){ //一定要加此判断,否则初始时会无限刷新
 location.href=setParam("page",e.curr);
 }
 }
 });
 });
 function setParam(param,value){
 var query = location.search.substring(1);
 var p = new RegExp("(^|)" + param + "=([^&]*)(|$)");
 if(p.test(query)){
 //query = query.replace(p,"$1="+value);
 var firstParam=query.split(param)[0];
 var secondParam=query.split(param)[1];
 if(secondParam.indexOf("&")>-1){
 var lastPraam=secondParam.split("&")[1];
 return '?'+firstParam+'&'+param+'='+value+'&'+lastPraam;
 }else{
 if(firstParam){
 return '?'+firstParam+''+param+'='+value;
 }else{
 return '?'+param+'='+value;
 }
 }
 }else{
 if(query == ''){
 return '?'+param+'='+value;
 }else{
 return '?'+query+'&'+param+'='+value;
 }
 }
 }
</script>
</body>
</html>

thinkPHP3.2.3 Laypage 分页