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中$_SERVER的详细参数与说明
Jul 29 PHP
php仿discuz分页效果代码
Oct 02 PHP
php连接mssql数据库的几种方法
Feb 21 PHP
PHPMailer发送HTML内容、带附件的邮件实例
Jul 01 PHP
php获取指定日期之间的各个周和月的起止时间
Nov 24 PHP
php实现四舍五入的方法小结
Mar 03 PHP
[原创]php实现子字符串位置相互对调互换的方法
Jun 02 PHP
PHP基于简单递归函数求一个数阶乘的方法示例
Apr 26 PHP
php 删除指定文件夹的实例讲解
Jul 25 PHP
laravel5.4生成验证码的实例讲解
Aug 05 PHP
记录Yii2框架开发微信公众号遇到的问题及解决方法
Jul 20 PHP
php函数式编程简单示例
Aug 08 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
ajax php 实现写入数据库
2009/09/02 PHP
php实现的三个常用加密解密功能函数示例
2017/11/06 PHP
PHP图像处理 imagestring添加图片水印与文字水印操作示例
2020/02/06 PHP
php将字符串转换为数组实例讲解
2020/05/05 PHP
PHP中SESSION过期设置
2021/03/09 PHP
extjs ColumnChart设置不同的颜色实现代码
2013/05/17 Javascript
js数组转json并在后台对其解析具体实现
2013/11/20 Javascript
js中的onchange和onpropertychange (onchange无效的解决方法)
2014/03/08 Javascript
Google官方支持的NodeJS访问API,提供后台登录授权
2014/07/29 NodeJs
AngularJS基础 ng-cloak 指令简单示例
2016/08/01 Javascript
JQuery统计input和textarea文字输入数量(代码分享)
2016/12/29 Javascript
浅谈jQuery中的$.extend方法来扩展JSON对象
2017/02/12 Javascript
JavaScript实现简单评论功能
2017/08/17 Javascript
关于Vue项目跨平台运行问题的解决方法
2018/09/18 Javascript
vuex+axios+element-ui实现页面请求loading操作示例
2020/02/02 Javascript
微信小程序录音实现功能并上传(使用node解析接收)
2020/02/26 Javascript
TypeScript 引用资源文件后提示找不到的异常处理技巧
2020/07/15 Javascript
js实现全选和全不选
2020/07/28 Javascript
python下os模块强大的重命名方法renames详解
2017/03/07 Python
python学习之matplotlib绘制散点图实例
2017/12/09 Python
Python实现GUI学生信息管理系统
2020/04/05 Python
Tornado 多进程实现分析详解
2018/01/12 Python
python3+PyQt5实现自定义分数滑块部件
2018/04/24 Python
python3使用matplotlib绘制散点图
2019/03/19 Python
树莓派4B+opencv4+python 打开摄像头的实现方法
2019/10/18 Python
解决keras GAN训练是loss不发生变化,accuracy一直为0.5的问题
2020/07/02 Python
html5页面结构_动力节点Java学院整理
2017/07/10 HTML / CSS
英国儿童图书网站:Scholastic
2017/03/26 全球购物
世界上最好的野生海鲜和有机食品:Vital Choice
2020/01/16 全球购物
计算机个人求职信范例
2014/01/24 职场文书
2014婚礼司仪主持词
2014/03/14 职场文书
企业负责人任命书
2014/06/05 职场文书
加强作风建设工作总结
2014/10/23 职场文书
自主招生推荐信格式模板
2015/03/24 职场文书
pycharm无法导入lxml的解决办法
2021/03/31 Python
CSS中float高度塌陷问题的四种解决方案
2022/04/18 HTML / CSS