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 相关文章推荐
解决MySQL中文输出变成问号的问题
Jun 05 PHP
PHP表单递交控件名称含有点号(.)会被转化为下划线(_)的处理方法
Jan 06 PHP
ThinkPHP中U方法的使用浅析
Jun 13 PHP
PHP基于GD库的缩略图生成代码(支持jpg,gif,png格式)
Jun 19 PHP
destoon之一键登录设置
Jun 21 PHP
PHP模块memcached使用指南
Dec 08 PHP
PHP 生成N个不重复的随机数
Jan 21 PHP
基于PHP实现数据分页显示功能
May 26 PHP
浅析php如何实现App常用的秒发功能
Aug 03 PHP
php版阿里大于(阿里大鱼)短信发送实例详解
Nov 30 PHP
使用 laravel sms 构建短信验证码发送校验功能
Nov 06 PHP
详解Laravel服务容器的绑定与解析
Nov 05 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 实例化类的一点摘记
2008/03/23 PHP
php json转换相关知识(小结)
2018/12/21 PHP
PHP使用openssl扩展实现加解密方法示例
2020/02/20 PHP
JavaScript 组件之旅(四):测试 JavaScript 组件
2009/10/28 Javascript
JavaScript学习笔记记录我的旅程
2012/05/23 Javascript
js(jQuery)获取时间的方法及常用时间类搜集
2013/10/23 Javascript
javascript实现多级联动下拉菜单的方法
2015/02/06 Javascript
JavaScript中的Repaint和Reflow用法详解
2015/07/27 Javascript
JavaScript高级教程5.6之基本包装类型(详细)
2015/11/23 Javascript
Jquery实现select multiple左右添加和删除功能的简单实例
2016/05/26 Javascript
JS解决iframe之间通信和自适应高度的问题
2016/08/24 Javascript
微信小程序 扎金花简单实例
2017/02/21 Javascript
jQuery插件FusionCharts实现的Marimekko图效果示例【附demo源码】
2017/03/24 jQuery
EasyUI Tree树组件无限循环的解决方法
2017/09/27 Javascript
AngularJS 多指令Scope问题的解决
2018/10/25 Javascript
vue实现分页组件
2020/06/16 Javascript
实现vuex与组件data之间的数据同步更新方式
2019/11/12 Javascript
[46:00]Ti4 冒泡赛第二轮LGD vs C9 2
2014/07/14 DOTA
python 字典(dict)遍历的四种方法性能测试报告
2014/06/25 Python
Python中的生成器和yield详细介绍
2015/01/09 Python
简析Python的闭包和装饰器
2016/02/26 Python
Python实现输出程序执行进度百分比的方法
2017/09/16 Python
Django项目使用CircleCI的方法示例
2019/07/14 Python
Pycharm和Idea支持的vim插件的方法
2020/02/21 Python
详解python中的闭包
2020/09/07 Python
python爬虫线程池案例详解(梨视频短视频爬取)
2021/02/20 Python
css3使用animation属性实现炫酷效果(推荐)
2020/02/04 HTML / CSS
struct与class的区别
2014/02/03 面试题
什么是托管函数?托管函数有什么用?
2014/06/15 面试题
周年庆典主持词
2014/04/02 职场文书
读书活动总结
2014/04/28 职场文书
房屋租房协议书范本
2014/12/04 职场文书
家长通知书家长意见
2014/12/30 职场文书
内勤岗位职责范本
2015/04/13 职场文书
小学生家长意见
2015/06/03 职场文书
Redis安装启动及常见数据类型
2021/04/14 Redis