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 相关文章推荐
一个取得文件扩展名的函数
Oct 09 PHP
php daodb插入、更新与删除数据
Mar 19 PHP
PHP 进程锁定问题分析研究
Nov 24 PHP
php 实现进制转换(二进制、八进制、十六进制)互相转换实现代码
Oct 22 PHP
PHP仿博客园 个人博客(2) 数据库增添改删
Jul 05 PHP
ThinkPHP模板范围判断输出In标签与Range标签用法详解
Jun 30 PHP
Yii框架中 find findAll 查找出制定的字段的方法对比
Sep 10 PHP
yii2超好用的日期组件和时间组件
May 05 PHP
php pdo oracle中文乱码的快速解决方法
May 16 PHP
PHP数组相加操作及与array_merge的区别浅析
Nov 26 PHP
PHP设计模式之工厂模式定义与用法详解
Apr 03 PHP
Windows上php5.6操作mongodb数据库示例【配置、连接、获取实例】
Feb 13 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新手上路(七)
2006/10/09 PHP
php常用表单验证类用法实例
2015/06/18 PHP
Laravel中正确地返回HTTP状态码方法示例
2019/09/10 PHP
使用git迁移Laravel项目至新开发环境的步骤详解
2020/04/06 PHP
禁止刷新,回退的JS
2006/11/25 Javascript
如何使用jQuery来处理图片坏链具体实现步骤
2013/05/02 Javascript
jQuery平滑旋转幻灯片特效代码分享
2015/09/07 Javascript
jQuery实现简单下拉导航效果
2015/09/07 Javascript
jQuery版本升级踩坑大全
2016/01/12 Javascript
第九章之路径分页标签与徽章组件
2016/04/25 Javascript
jQuery模拟select实现下拉菜单功能
2016/06/20 Javascript
JQuery查找子元素find()和遍历集合each的方法总结
2017/03/07 Javascript
在vue.js中抽出公共代码的方法示例
2017/06/08 Javascript
JavaScript输出所选择起始与结束日期的方法
2017/07/12 Javascript
js封装成插件_Canvas统计图插件编写实例
2017/09/12 Javascript
React组件内事件传参实现tab切换的示例代码
2018/07/04 Javascript
Python动态加载模块的3种方法
2014/11/22 Python
python关键字and和or用法实例
2015/05/28 Python
python结合opencv实现人脸检测与跟踪
2015/06/08 Python
Python常用的爬虫技巧总结
2016/03/28 Python
Django自定义认证方式用法示例
2017/06/23 Python
python中利用h5py模块读取h5文件中的主键方法
2018/06/05 Python
django中ORM模型常用的字段的使用方法
2019/03/05 Python
python画双y轴图像的示例代码
2019/07/07 Python
python scrapy爬虫代码及填坑
2019/08/12 Python
Django1.11配合uni-app发起微信支付的实现
2019/10/12 Python
python爬虫多次请求超时的几种重试方法(6种)
2020/12/01 Python
Melijoe美国官网:法国奢侈童装购物网站
2017/04/19 全球购物
JD Sports丹麦:英国领先的运动时尚零售商
2020/11/24 全球购物
法制报告会主持词
2014/04/02 职场文书
职务任命书范本
2014/06/05 职场文书
nginx对http请求处理的各个阶段详析
2021/03/31 Servers
vue组件的路由高亮问题解决方法
2021/05/11 Vue.js
Python 游戏大作炫酷机甲闯关游戏爆肝数千行代码实现案例进阶
2021/10/16 Python
高并发下Redis如何保持数据一致性(避免读后写)
2022/03/18 Redis
Three.js实现雪糕地球的使用示例详解
2022/07/07 Javascript