Home  >  Article  >  Backend Development  >  thinkPHP3.2.3 combines Laypage to implement paging function

thinkPHP3.2.3 combines Laypage to implement paging function

不言
不言Original
2018-06-07 16:37:591709browse

这篇文章主要介绍了thinkPHP3.2.3结合Laypage实现的分页功能,结合实例形式分析了thinkPHP3.2.3结合Laypage实现分页的model控制器与view视图相关操作技巧,需要的朋友可以参考下

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

控制器

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
  /**
  *@brief 查询
  ****/
  public function index(){
  $choose = I(&#39;choose&#39;,&#39;-6&#39;);
  $c[&#39;easy_hard&#39;] = $choose;
    $type=I(&#39;typeid&#39;,&#39;&#39;);
    $nowpage=I(&#39;page&#39;,1);
    if($type == &#39;&#39;)
    {
      if($choose == -6)
      {
        $totalpage=ceil((D(&#39;data&#39;)->count())/10);
        $infos=D(&#39;data&#39;)->limit(($nowpage-1)*10,10)->select();
      }else{
        $totalpage=ceil((D(&#39;data&#39;)->where($c)->count())/10);
        $infos=D(&#39;data&#39;)->where($c)->limit(($nowpage-1)*10,10)->select();
      }
    }else{
      if($choose == -6)
      {
        $map[&#39;data&#39;] = array(&#39;like&#39;,"%$type%");
        $totalpage=ceil((D(&#39;data&#39;)->where($map)->count())/10);
        $infos=D(&#39;data&#39;)->where($map)->limit(($nowpage-1)*10,10)->select();
      }else{
        $map[&#39;data&#39;] = array(&#39;like&#39;,"%$type%");
        $totalpage=ceil((D(&#39;data&#39;)->where($map)->where($c)->count())/10);
        $infos=D(&#39;data&#39;)->where($map)->where($c)->limit(($nowpage-1)*10,10)->select();
      }
    }
  $this->assign(&#39;type&#39;,$type);
    $this->assign(&#39;choose&#39;,$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>
<p>
 <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 &#39;&#39; "> {$type} </if>" id="type"><button id="sou">搜索</button>
</p>
<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 &#39;0&#39;">简单
            <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>
  <p style="margin-top:15px; text-align:center;" id="page11"></p>
  <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+&#39;&choose=&#39;+checkValue;
  });
  $(function(){
      laypage({
        cont: &#39;page11&#39;,
        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 &#39;?&#39;+firstParam+&#39;&&#39;+param+&#39;=&#39;+value+&#39;&&#39;+lastPraam;
      }else{
        if(firstParam){
          return &#39;?&#39;+firstParam+&#39;&#39;+param+&#39;=&#39;+value;
        }else{
          return &#39;?&#39;+param+&#39;=&#39;+value;
        }
      }
    }else{
      if(query == &#39;&#39;){
        return &#39;?&#39;+param+&#39;=&#39;+value;
      }else{
        return &#39;?&#39;+query+&#39;&&#39;+param+&#39;=&#39;+value;
      }
    }
  }
</script>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

thinkPHP中统计排行与分页显示的功能

thinkphp实现分页显示功能

The above is the detailed content of thinkPHP3.2.3 combines Laypage to implement paging function. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn