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


Posted in PHP onMay 28, 2018

本文实例讲述了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>

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP 高手之路(一)
Oct 09 PHP
优化使用mysql存储session的php代码
Jan 10 PHP
很好用的PHP数据库类
May 27 PHP
PHP 设置MySQL连接字符集的方法
Jan 02 PHP
Zend的MVC机制使用分析(二)
May 02 PHP
Zend Studio 实用快捷键一览表(精心整理)
Aug 10 PHP
PHP中new static()与new self()的区别异同分析
Aug 22 PHP
php简单获取复选框值的方法
May 11 PHP
Python中使用django form表单验证的方法
Jan 16 PHP
PHP静态方法和静态属性及常量属性的区别与介绍
Mar 22 PHP
PHP 面向对象程序设计之类属性与类常量实现方法分析
Apr 13 PHP
Linux系统下安装PHP7.3版本
Jun 26 PHP
Windows下wamp php单元测试工具PHPUnit安装及生成日志文件配置方法
May 28 #PHP
PHP测试框架PHPUnit组织测试操作示例
May 28 #PHP
php empty 函数判断结果为空但实际值却为非空的原因解析
May 28 #PHP
PHP排序二叉树基本功能实现方法示例
May 26 #PHP
Thinkphp5+uploadify实现的文件上传功能示例
May 26 #PHP
PHP ADODB实现事务处理功能示例
May 25 #PHP
PHP ADODB实现分页功能简单示例
May 25 #PHP
You might like
php 调试利器debug_print_backtrace()
2012/07/23 PHP
ThinkPHP框架设计及扩展详解
2014/11/25 PHP
PHP魔术方法的使用示例
2015/06/23 PHP
php 在字符串指定位置插入新字符的简单实现
2016/06/28 PHP
浅谈PHP实现大流量下抢购方案
2017/12/15 PHP
yii2 开发api接口时优雅的处理全局异常的方法
2019/05/14 PHP
javaScript对象和属性的创建方法
2007/01/15 Javascript
Document:getElementsByName()使用方法及示例
2013/10/28 Javascript
JQuery的$命名冲突详细解析
2013/12/28 Javascript
jquery用data方法获取某个元素上的事件
2014/06/23 Javascript
JavaScript中的Truthy和Falsy介绍
2015/01/01 Javascript
javascript 动态创建表格
2015/01/08 Javascript
JQuery中extend的用法实例分析
2015/02/08 Javascript
javascript原始值和对象引用实例分析
2015/04/25 Javascript
JS操作COOKIE实现备忘记录的方法
2016/04/01 Javascript
动态加载js、css的简单实现代码
2016/05/26 Javascript
JavaScript错误处理和堆栈追踪详解
2017/04/18 Javascript
node.js中axios使用心得总结
2017/11/29 Javascript
基于dataset的使用和图片延时加载的实现方法
2017/12/11 Javascript
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
2019/08/17 Javascript
[03:43]TI9战队采访——PSG.LGD
2019/08/22 DOTA
python list语法学习(带例子)
2013/11/01 Python
Python使用爬虫猜密码
2016/02/19 Python
理解Python中的With语句
2016/03/18 Python
tensorflow输出权重值和偏差的方法
2018/02/10 Python
opencv python 2D直方图的示例代码
2018/07/20 Python
python 实现在shell窗口中编写print不向屏幕输出
2020/02/19 Python
Python select及selectors模块概念用法详解
2020/06/22 Python
基于Python中Remove函数的用法讨论
2020/12/11 Python
EJB的几种类型
2012/08/15 面试题
文科生自我鉴定
2014/02/15 职场文书
学习十八大报告感言
2014/02/28 职场文书
大学毕业感言200字
2014/03/09 职场文书
联片教研活动总结
2014/07/01 职场文书
离婚协议书怎么写2014
2014/09/30 职场文书
2016三八妇女节慰问信
2015/11/30 职场文书