php+layui数据表格实现数据分页渲染代码


Posted in PHP onOctober 26, 2019

一、HTML

<table class="layui-hide layui-table" id="spu-data"></table>

二、JS

说明:需要引入layui中的table和laytpl模板引擎,laytpl可以自定义事件及自定义数据字段等

<!-- 拼接图片 -->
<script type="text/html" id="pimg">
 <img class="img" onmouseover="divIn(event)" onmouseout="divOut(event)" onmousemove="divIn(event)" src="__PUBLIC__/{{d.pimgurl}}t_{{d.pimgname}}" alt="">
</script>

<!-- 查看详情按钮 -->
<script type="text/html" id="spu_detail">
 <button class="layui-btn layui-btn-xs layui-btn-primary spu_detail" artnum="{{d.artnum}}" value="{{d.basic_id}}" onclick="spuDetail(event)">查看详情</button>
</script>

<script type="text/html" id="hotcake_color">
 {{# if (d.hotcake === '超级爆款') { }} 
  <span style="display: block;background-color: #CCFFCC;">{{ d.hotcake }}</span>
 {{# } else if(d.hotcake === '大爆款') { }} 
  <span style="display: block;background-color: #99CCCC;">{{ d.hotcake }}</span> 
 {{# } else if(d.hotcake === '小爆款') { }} 
  <span style="display: block;background-color: #FFCCCC;">{{ d.hotcake }}</span> 
 {{# } else if(d.hotcake === '热销款') { }} 
  <span style="display: block;background-color: #FFFFCC;">{{ d.hotcake }}</span> 
 {{# } else { }} 
  <span style="display: block;background-color: #CCFFFF;">{{ d.hotcake }}</span> 
 {{# } }} 
</script>
<script type="text/javascript">

layui.use(['form','laydate','layer','table','laytpl'],function(){
 var laydate = layui.laydate;
 var layer = layui.layer;
 var table = layui.table;
 var laytpl = layui.laytpl;

//---SPU数据---------------------------------------------
 var spu_table = table.render({
  elem: '#spu-data', //html中table窗口的id
  height: 800,
  url: '__URL__/spu_data', //后台接口
  toolbar: true,
  loading: true,
  text: {
   none: '空空如也'
  },
  title: 'spu数据',
  size: 'sm',
  page: {
   layout: ['count', 'prev', 'page', 'next', 'limit', 'refresh', 'skip'],
   limit: 20,
   limits: [20,30,50,100,200,5000]
  },
  cols: [[
    {field:'n', title: 'i', width: 55},
    {field:'', title: '图', width: 31, templet: '#pimg'},     // templet 引用laytpl中的自定义模板
    {field:'', title: '查看详情', width: 120, templet: '#spu_detail'},  // 引用laytpl中的自定义模板
    {field:'artnum', title: '货号', sort: true},
    {field:'gcolor', title: '颜色组', sort: true},
    {field:'cate', title: '品类', sort: true},
    {field:'price', title: '业绩', sort: true},
    {field:'sales', title: '销量', sort: true},
    {field:'hotcake', title: '热销程度', templet: '#hotcake_color', sort: true},
    {field:'sumcost', title: '商品成本', sort: true}
  ]]
 });

// 搜索重载数据
 $('#spudata_search').click(function(){
  // 获取日期的值
  var date = $('#spusearch_date').val();
  if (!date) {
   layer.msg('请选择日期区间搜索', {
    time: 2000
   });
   return false;
  }

  var perfor_val = $('#perfor_val').val();;
  var hot_type = $('#hot_type').val();
  var artnum = $('#artnum').val();
  var cate_id = $('#cate_id').val();

  // 只选其一条件
  if (perfor_val && hot_type) {
   layer.msg('业绩区间和爆款类型只选其一', {
    time: 2000
   });
   return false;
  }

  // 数据重载
  spu_table.reload({
   // 发送条件
   where: {
    artnum: artnum,
    perfor_val: perfor_val,
    hot_type: hot_type,
    cate_id: cate_id,
    date: date,
    act: 'reload'
   },
   page: {
    layout: ['count', 'prev', 'page', 'next', 'limit', 'refresh', 'skip'],
    curr: 1
   }
  });

 })

}) 
</script>

三、PHP

#这里是PHP类中主要的配合步骤

# 接收layui发送的limit
if (trim($_GET['limit'])) {
 $limit = trim($_GET['limit']);
}else{
 $limit = 15;
}

# 按某字段排序,$rows为数据数组
$sort_num = array_column($rows,'num');
array_multisort($sort_num,SORT_DESC,$rows, SORT_DESC);

# 调用自定义分页函数
$datas = array();
$datas = showpage($rows,$limit);

$items = array();

# 返回layui数据格式
$items['data'] = $datas['rows'];
$items['code'] = 0;
$items['msg'] = 'ok';
$items['count'] = $datas['tot'];

exit(json_encode($items));
# showpage函数

function showpage($rows,$count){ 
 $tot = count($rows); // 总数据条数

 if ($_GET['page']) { //获取当前页码
  $page = $_GET['page'];
 }else{
  $page = 1;
 }

 // $count = $count; # 每页显示条数

 $countpage = ceil($tot/$count); # 计算总共页数

 $start = ($page-1)*$count; # 计算每页开始位置

 $datas = array_slice($rows, $start, $count); # 计算当前页数据

 # 获取上一页和下一页
 if ($page > 1) {
  $uppage = $page-1;
 }else{
  $uppage = 1;
 }

 if ($page < $countpage) {
  $nextpage = $page+1;
 }else{
  $nextpage = $countpage;
 }

 $pages['countpage'] = $countpage;
 $pages['page'] = $page;
 $pages['uppage'] = $uppage;
 $pages['nextpage'] = $nextpage;
 $pages['tot'] = $tot;

 //循环加入序号 , 避免使用$i引起的序号跳位
 $n = 1;
 foreach ($datas as &$data) {
  $data['n'] = $n;
  $n++;
 }
 
 $pages['rows'] = $datas;

 return $pages;
}

以上这篇php+layui数据表格实现数据分页渲染代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php park、unpark、ord 函数使用方法(二进制流接口应用实例)
Oct 19 PHP
Php Ctemplate引擎开发相关内容
Mar 03 PHP
如何使用php判断所处服务器操作系统的类型
Jun 20 PHP
PHP实现变色验证码实例
Jan 06 PHP
PHP Curl出现403错误的解决办法
May 29 PHP
PHP制作图形验证码代码分享
Oct 23 PHP
php魔术变量用法实例详解
Nov 13 PHP
PHP多进程编程总结(推荐)
Jul 18 PHP
php+ajax实现异步上传文件或图片功能
Jul 18 PHP
php post json参数的传递和接收处理方法
May 31 PHP
php生成二维码不保存服务器还有下载功能的实现代码
Aug 09 PHP
PHP实现获取毫秒时间戳的方法【使用microtime()函数】
Mar 01 PHP
layui数据表格自定义每页条数limit设置
Oct 26 #PHP
在 Laravel 中动态隐藏 API 字段的方法
Oct 25 #PHP
Laravel 实现添加多语言提示信息
Oct 25 #PHP
Laravel5.5 动态切换多语言的操作方式
Oct 25 #PHP
解决php扩展安装不生效问题
Oct 25 #PHP
Laravel实现通过blade模板引擎渲染视图
Oct 25 #PHP
laravel 解决Validator使用中出现的问题
Oct 25 #PHP
You might like
PHP 递归效率分析
2009/11/24 PHP
PHP OPCode缓存 APC详细介绍
2010/10/12 PHP
成为好程序员必须避免的5个坏习惯
2014/07/04 PHP
Thinkphp将二维数组变为标签适用的一维数组方法总结
2014/10/30 PHP
浅谈PHP的$_SERVER[SERVER_NAME]
2017/02/04 PHP
php+mysql开发的最简单在线题库(在线做题系统)完整案例
2019/03/30 PHP
php校验公钥是否可用的实例方法
2019/09/17 PHP
Javascript条件判断使用小技巧总结
2008/09/08 Javascript
基于jquery &amp; json的省市区联动代码
2012/06/26 Javascript
uploadify在Firefox下丢失session问题的解决方法
2013/08/07 Javascript
js的alert样式如何更改如背景颜色
2014/01/22 Javascript
JS中怎样判断undefined(比较不错的方法)
2014/03/27 Javascript
一个仿糯米弹框效果demo
2014/07/22 Javascript
11种ASP连接数据库的方法
2015/09/18 Javascript
JavaScript使用atan2来绘制箭头和曲线的实例
2017/09/14 Javascript
express如何使用session与cookie的方法
2018/01/30 Javascript
vue+iview+less+echarts实战项目总结
2018/02/22 Javascript
vue2.0模拟锚点的实例
2018/03/14 Javascript
Javascript中parseInt的正确使用方式
2018/10/17 Javascript
ES6知识点整理之数组解构和字符串解构的应用示例
2019/04/17 Javascript
vue中动态select的使用方法示例
2019/10/28 Javascript
详解vue-template-admin三级路由无法缓存的解决方案
2020/03/10 Javascript
jQuery实现查看图片功能
2020/12/01 jQuery
Python argv用法详解
2016/01/08 Python
python issubclass 和 isinstance函数
2019/07/25 Python
使用Python进行中文繁简转换的实现代码
2019/10/18 Python
施华洛世奇英国官网:SWAROVSKI英国
2017/03/13 全球购物
Ralph Lauren英国官方网站:Ralph Lauren UK
2018/04/03 全球购物
捷克鲜花配送:Florea.cz
2018/10/29 全球购物
全球性的奢侈品梦工厂:Forzieri(福喜利)
2019/02/20 全球购物
中学教师师德师风演讲稿
2014/08/22 职场文书
财务部岗位职责
2015/02/03 职场文书
使用JS实现简易计算器
2021/06/14 Javascript
基于angular实现树形二级表格
2021/10/16 Javascript
前端vue+express实现文件的上传下载示例
2022/02/18 Vue.js
SQL Server内存机制浅探
2022/04/06 SQL Server