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 8小时时间差的解决方法小结
Dec 22 PHP
PHP用GD库生成高质量的缩略图片
Mar 09 PHP
php标签云的实现代码
Oct 10 PHP
浏览器预览PHP文件时顶部出现空白影响布局分析原因及解决办法
Jan 11 PHP
PHP SPL使用方法和他的威力
Nov 12 PHP
php 字符串压缩方法比较示例
Jan 23 PHP
php实现过滤表单提交中html标签的方法
Oct 17 PHP
php实现转换html格式为文本格式的方法
May 16 PHP
Yii1.1中通过Sql查询进行的分页操作方法
Mar 16 PHP
PHP大文件分割上传 PHP分片上传
Aug 28 PHP
PHP面向对象多态性实现方法简单示例
Sep 27 PHP
thinkphp5 加载静态资源路径与常量的方法
Dec 24 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中CURL的CURLOPT_POSTFIELDS参数使用细节
2014/03/17 PHP
PHP中创建图像并绘制文字的例子
2014/11/19 PHP
通过php添加xml文档内容的方法
2015/01/23 PHP
Easy.Ajax 部分源代码 支持文件上传功能, 兼容所有主流浏览器
2011/02/24 Javascript
jQuery中的.bind()、.live()和.delegate()之间区别分析
2011/06/08 Javascript
jquery 扑捉回车键事件代码
2014/04/24 Javascript
node.js中的http.createClient方法使用说明
2014/12/15 Javascript
javascript字符串函数汇总
2015/12/06 Javascript
使用jQuery判断浏览器滚动条位置的方法
2016/05/30 Javascript
jQuery Ajax 上传文件处理方式介绍(推荐)
2016/06/30 Javascript
AngularJs中Bootstrap3 datetimepicker使用实例
2016/12/13 Javascript
ES6教程之for循环和Map,Set用法分析
2017/04/10 Javascript
关于vue的语法规则检测报错问题的解决
2018/05/21 Javascript
Webpack的dll功能使用
2018/06/28 Javascript
bootstrap动态调用select下拉框的实例代码
2018/08/09 Javascript
nodejs更新package.json中的dependencies依赖到最新版本的方法
2018/10/10 NodeJs
vue 移动端注入骨架屏的配置方法
2019/06/25 Javascript
结合axios对项目中的api请求进行封装操作
2020/09/21 Javascript
[55:32]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第二场
2018/04/05 DOTA
Python中的__slots__示例详解
2017/07/06 Python
CentOS 7 安装python3.7.1的方法及注意事项
2018/11/01 Python
Python实现的微信红包提醒功能示例
2019/08/22 Python
TensorFlow实现从txt文件读取数据
2020/02/05 Python
Python3 获取文件属性的方式(时间、大小等)
2020/03/12 Python
CSS3属性使网站设计增强同时不消弱可用性
2009/08/29 HTML / CSS
使用HTML5原生对话框元素并轻松创建模态框组件
2019/03/06 HTML / CSS
美国照明、家居装饰和家具购物网站:Bellacor
2017/09/20 全球购物
Linux管理员面试题 Linux admin interview questions
2016/07/08 面试题
《学会合作》教学反思
2014/04/12 职场文书
幽默自我介绍演讲稿
2014/08/21 职场文书
2015试用期转正工作总结
2014/12/12 职场文书
团委工作总结2015
2015/04/02 职场文书
单位计划生育责任书
2015/05/09 职场文书
李强感恩观后感
2015/06/17 职场文书
使用Python的开发框架Brownie部署以太坊智能合约
2021/05/28 Python
Oracle 多表查询基本语法实例
2022/04/18 Oracle