TP3.23 与Laypage 结合进行分页

demo地址:http://tp.ytlwin.top

控制器

<?php
namespace HomeController;
use ThinkController;

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:;" onclick="return del({$vo.id});">删除</a>
						<a href="javascript:;" 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="+type+"&choose="+checkValue;
	} 

	$("#sou").bind("click",function(event){
	    var type=$("#type").val();//获取假设的搜索条件值
	    var checkValue=$("#slc1").val(); 
	    window.location.href="?typeid="+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>

  

原文地址:https://www.cnblogs.com/foreversun/p/6664100.html