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 相关文章推荐
动态新闻发布的实现及其技巧
Oct 09 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装(win+linux)
May 05 PHP
php实现无限级分类
Dec 24 PHP
php自定义加密与解密程序实例
Dec 31 PHP
php微信开发接入
Aug 27 PHP
PHP 将dataurl转成图片image方法总结
Oct 14 PHP
关于PHP中字符串与多进制转换函数的实例代码
Nov 03 PHP
thinkphp的dump函数无输出实例代码
Nov 15 PHP
老生常谈PHP面向对象之标识映射
Jun 21 PHP
PHP实现权限管理功能示例
Sep 22 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
Feb 27 PHP
PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】
May 29 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文本数据库的搜索方法
2006/10/09 PHP
php 使用curl模拟ip和来源进行访问的实现方法
2017/05/02 PHP
PHP的mysqli_sqlstate()函数讲解
2019/01/23 PHP
PHP DB 数据库连接类定义与用法示例
2019/03/11 PHP
在PHP中实现使用Guzzle执行POST和GET请求
2019/10/15 PHP
jquery 年会抽奖程序
2011/12/22 Javascript
Javascript简单实现可拖动的div
2013/10/22 Javascript
JavaScript数值转换的三种方式总结
2014/07/31 Javascript
js实现缓冲运动效果的方法
2015/04/10 Javascript
JS获取input file绝对路径的方法(推荐)
2016/08/02 Javascript
微信小程序 地图定位简单实例
2016/10/14 Javascript
微信小程序 地图(map)实例详解
2016/11/16 Javascript
vue-rx的初步使用教程
2018/09/21 Javascript
微信小程序制作表格的方法
2019/02/14 Javascript
JS事件绑定的常用方式实例总结
2019/03/02 Javascript
vue路由对不同界面进行传参及跳转的总结
2019/04/20 Javascript
vue基本使用--refs获取组件或元素的实例
2019/11/07 Javascript
JS正则表达式验证端口范围(0-65535)
2020/01/06 Javascript
一看就会的vuex实现登录验证(附案例)
2020/01/09 Javascript
jQuery 选择方法及$(this)用法实例分析
2020/05/19 jQuery
python3大文件解压和基本操作
2017/12/15 Python
Python+OpenCV实现车牌字符分割和识别
2018/03/31 Python
Tensorflow 定义变量,函数,数值计算等名字的更新方式
2020/02/10 Python
pytorch:model.train和model.eval用法及区别详解
2020/02/20 Python
利用css3实现的简单的鼠标悬停按钮
2014/11/04 HTML / CSS
英国优质鞋类专家:Robinson’s Shoes
2017/12/08 全球购物
保安部任务及岗位职责
2014/02/25 职场文书
公司爱心捐款倡议书
2014/05/14 职场文书
2014副局长群众路线对照检查材料思想汇报
2014/09/22 职场文书
县政府领导班子四风问题对照检查材料思想汇报
2014/09/26 职场文书
2015年七夕情人节感言
2015/08/03 职场文书
保险公司增员口号
2015/12/25 职场文书
送给小学生的暑假礼物!小学生必背99首古诗
2019/07/02 职场文书
为什么node.js不适合大型项目
2021/04/28 Javascript
使用Django框架创建项目
2022/06/10 Python
搭建zabbix监控以及邮件报警的超级详细教学
2022/07/15 Servers