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
Discuz 模板引擎的封装类代码
Jul 18 PHP
php面向对象全攻略 (十七) 自动加载类
Sep 30 PHP
php 仿Comsenz安装效果代码打包提供下载
May 09 PHP
浅析HTTP消息头网页缓存控制以及header常用指令介绍
Jun 28 PHP
简单实用的.net DataTable导出Execl
Oct 28 PHP
PHP禁止个别IP访问网站
Oct 30 PHP
PHP SESSION的增加、删除、修改、查看操作
Mar 20 PHP
php生成年月日下载列表的方法
Apr 24 PHP
php实现的简单检验登陆类
Jun 18 PHP
Yii2分页的使用及其扩展方法详解
May 23 PHP
php抛出异常与捕捉特定类型的异常详解
Oct 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模板原理讲解
2013/11/13 PHP
Zend Framework页面缓存实例
2014/06/25 PHP
微信公众平台之快递查询功能用法实例
2015/04/14 PHP
PHP可变函数学习小结
2015/11/29 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
2017/12/25 PHP
PHP简单验证码功能机制实例详解
2019/03/27 PHP
ThinkPHP5&amp;5.1实现验证码的生成、使用及点击刷新功能示例
2020/02/07 PHP
extjs 04_grid 单击事件新发现
2012/11/27 Javascript
多种方式实现JS调用后台方法进行数据交互
2013/08/20 Javascript
JavaScript 判断用户输入的邮箱及手机格式是否正确
2013/12/08 Javascript
jquery+ajax实现跨域请求的方法
2015/01/20 Javascript
JavaScript表格常用操作方法汇总
2015/04/15 Javascript
教你用javascript实现随机标签云效果_附代码
2016/03/16 Javascript
js点击任意区域弹出层消失实现代码
2016/12/27 Javascript
jquery Ajax 全局调用封装实例详解
2017/01/16 Javascript
js遮罩效果制作弹出注册界面效果
2017/01/25 Javascript
vue2.0 父组件给子组件传递数据的方法
2018/01/15 Javascript
vue实现点击关注后及时更新列表功能
2018/06/26 Javascript
基于element-ui的rules中正则表达式
2018/09/04 Javascript
浅析Angular 实现一个repeat指令的方法
2019/07/21 Javascript
Nodejs实现图片上传、压缩预览、定时删除功能
2019/10/25 NodeJs
详解vue中v-bind:style效果的自定义指令
2020/01/21 Javascript
浅谈Python中的可变对象和不可变对象
2017/07/07 Python
python常用库之NumPy和sklearn入门
2019/07/11 Python
python中使用you-get库批量在线下载bilibili视频的教程
2020/03/10 Python
python高阶函数map()和reduce()实例解析
2020/03/16 Python
Python select及selectors模块概念用法详解
2020/06/22 Python
加拿大时装零售商:Influence U
2018/12/22 全球购物
英国婚礼商城:Wedding Mall
2019/11/02 全球购物
Java基础面试题
2014/07/19 面试题
营业员演讲稿
2013/12/30 职场文书
新农村建设典型材料
2014/05/31 职场文书
球队口号
2014/06/18 职场文书
赔偿协议书怎么写
2015/01/28 职场文书
幼儿园教师读书笔记
2015/06/29 职场文书
win10+anaconda安装yolov5的方法及问题解决方案
2021/04/29 Python