当前位置: 首页 > news >正文

复制tr的一行数据或者复制数据使用,使用jq和php

效果图:

在这里插入图片描述

2.Html

<!--复制的tr数据,s----------------------------------------------------------------------------------------------->{foreach from=$arrs key=kk item=vv}
<tr><td style="text-align:center;"  >1</td><td style="text-align:center;" >2</td><td style="text-align:center;" >3</td><td style="text-align:center;"  >4</td></tr>
{/foreach}<!--定位复制要加入的位置-->
<tr class="del_rukou" id="copy_rukou" style="display: none;"></tr><!--复制的tr数据,e----------------------------------------------------------------------------------------------->

3.js

<script>//复制tr$(function () {$(".select_option").click(function (){add_tr('copy_rukou');})})function add_tr(id) {// 获取所有的tr元素// var rows = $('tr');// 创建新的tr元素var newRow = $('<tr style="height: 35px;"></tr><tr id="copy_rukou2" class="del_rukou2" style="display: none;"></tr>');//ajax获取添加的复制数据var tr_str = get_tr_fee('{$work_qid}')// 在新tr元素中添加数据newRow.html(tr_str); // 这里可以根据需要添加更多的数据// 将新的tr元素插入到指定id的tr元素之后$('#' + id ).after(newRow);//把第一个复制的定位的id删除,不然复制的数据在上面,不在下面$('.del_rukou').remove();//替换class,如果使用一样的class会都删除$(".del_rukou2").attr("id", "copy_rukou");$(".del_rukou2").attr("class", "del_rukou");//最上面的rowspan1叠加,这里是处理单元格的合并问题,可去掉var rowspan1 = $("#top_rowspan_id").attr("rowspan");rowspan1 = parseInt(rowspan1)var rowspan_new = rowspan1 + 1;$("#top_rowspan_id").attr("rowspan",rowspan_new);//文件上传的rowspan1叠加,这里是处理单元格的合并问题,可去掉var file_rowspan_val = $("#file_rowspan_id").attr("rowspan");file_rowspan_val = parseInt(file_rowspan_val)var file_rowspan_val = file_rowspan_val + 1;$("#file_rowspan_id").attr("rowspan",file_rowspan_val);}function get_tr_fee(wid) {var str = '';Ajax.call('customer_quote2worker.php?act=get_tr_fee&wid='+ wid, '', function(result){if(result.error==0){str =  result.str;}else{alert(result.message);}}, 'GET', 'JSON',false);return str;}/*function showCopyTrStr(resule){var resule_json = JSON.parse(resule);}*///删除事件function removeTr(e,wid,id){$(e).parents("tr").remove();//把合并的单元格-1//最上面的rowspan1叠加,这里是处理单元格的合并问题,可去掉var rowspan1 = $("#top_rowspan_id").attr("rowspan");rowspan1 = parseInt(rowspan1)var rowspan_new = rowspan1 - 1;$("#top_rowspan_id").attr("rowspan",rowspan_new);//文件上传的rowspan1叠加,这里是处理单元格的合并问题,可去掉var file_rowspan_val = $("#file_rowspan_id").attr("rowspan");file_rowspan_val = parseInt(file_rowspan_val)var file_rowspan_val = file_rowspan_val - 1;$("#file_rowspan_id").attr("rowspan",file_rowspan_val);//删除id数据,删除数据库的数据ajax_delete_tr(wid,id)}function ajax_delete_tr(wid,id) {Ajax.call('customer_quote2worker.php?act=ajax_delete_tr&wid='+ wid +'&id=' + id, '', function(result){if(result.error==0){}else{alert(result.message);}}, 'GET', 'JSON',false);}</script>

4.Php

elseif ($_REQUEST['act'] == 'get_tr_fee')//获取复制的tr数据,拼接到html中
{$wid        = intval($_REQUEST['wid']);$error_msg         = 'wid缺少';if(!$wid){echo json_encode(array('error'=>3,'message'=>$error_msg));exit;}$work_quote_row = db_class::getInfo($wid);//获取这个id的全部数据if(!$work_quote_row){echo json_encode(array('error'=>3,'message'=>'数据不存在'));exit;}$add_data                = [];$add_data['ref_wid']     = $wid;$add_data['add_time']    = get_todaytime();$add_data['add_user_id'] = get_admin_id_session();$add_id = db_class::add($add_data);$getCopyTrHtml = db_class::getCopyTrHtml($wid,$add_id);echo json_encode(array('error'=>0,'message'=>'','str'=>$getCopyTrHtml));exit;
}elseif ($_REQUEST['act'] == 'ajax_delete_tr')//删除复制的tr数据
{$wid        = intval($_REQUEST['wid']);$id        = intval($_REQUEST['id']);$error_msg         = 'wid缺少';if(!$wid){echo json_encode(array('error'=>3,'message'=>$error_msg));exit;}$work_quote_row = db_work_quote::getInfo($wid);$fee_row = db_work_quote_copy_fee::getInfo($id);if(!$work_quote_row){echo json_encode(array('error'=>3,'message'=>'数据不存在'));exit;}if(!$fee_row){echo json_encode(array('error'=>3,'message'=>'删除的数据不存在'));exit;}$res = db_work_quote_copy_fee::remove($id);if(!$res){echo json_encode(array('error'=>1,'message'=>'删除失败'));exit;}echo json_encode(array('error'=>0,'message'=>'','str'=>$getCopyTrHtml));exit;
}删除tr的方法,删除数据库的。看需求
5.类的方法
static function add($data)
{$res = $GLOBALS['db']->autoExecute(self::$table, $data, 'INSERT');$id  = $GLOBALS['db']->insert_id();//上面代码意思是写入数据库的数据,就是insert..return $res ? $id : false;
}/*** 获取复制的tr数据* @param $id* @return string*/static function getCopyTrHtml($wid,$id){$str = '';if(!$wid){return '';}if(!$id){return '';}$str.= '<td style="text-align:center;"  ><span><input name="name1" value="" type="text"></span>
</td>
<td style="text-align:center;" ><span><input name="name2" value="" type="text"></span>
</td>
<td style="text-align:center;" ><span><input name="name3" value="" type="text"></span></td>
<td style="text-align:center;"  ><span><input name="name4" value="" type="text"></span></td>';return $str;}这个方法,把多个td加入tr中/*** 直接删除,杀无赦* @param $id* @return bool*/
static function remove($id)
{if(!$id){return false;}$sql = "delete from " . self::$table. " WHERE id = ".$id;$res = $GLOBALS['db']->query($sql);if(!$res){return false;}return true;
}

6.注意

1.插入tr就是在数据库加入一条数据。如果想td都为空,把它删除,可以在刷新的时候,判断td是否都为空那就删除。
2.删除tr就是先删除dom节点,然后再删除数据库的数据。
3.这个操作有好的一面,就是用户在刷新后,也可以保存数据的完整性。如果使用jq复制的数据,刷新就会消失。还有降低对jq的操作复杂度,如果使用jq写也可以。
4.坏的一面就是,直接在数据库插入数据,会频繁操作数据库。对数据库不好。

相关文章:

复制tr的一行数据或者复制数据使用,使用jq和php

效果图&#xff1a; 2.Html <!--复制的tr数据&#xff0c;s----------------------------------------------------------------------------------------------->{foreach from$arrs keykk itemvv} <tr><td style"text-align:center;" >1</t…...

软件测试的基础(1)

程序员(开发) :编写程序代码(实现产品需求) 产品:收集并设计需求-需求文档(根据用户需求进行产品设计) UI设计师:设计界面,向外展示的形态 前端:用代码实现页面的显示 DBA:数据库设计(系统数据之间的关联) 运维:版本控制和发布、升级迭代,环境搭建和维护 客服:客户支持,…...

基于Java+SpringBoot+Vue前后端分离库存管理系统设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…...

Secrets in Kubernetes (K8s)

摘要 在Kubernetes&#xff08;K8s&#xff09;中&#xff0c;Secrets是一种用于存储敏感数据的资源对象。它可以用于存储密码、API密钥、数据库凭证等敏感信息&#xff0c;以便在应用程序中使用。 设计实现说明如下&#xff1a; 加密存储&#xff1a;Kubernetes使用Base64编…...

模板测试和深度测试在cocoscreator中的应用

模板测试(Stencil Test)&#xff1a; 当片段着色器处理完一个片段之后&#xff0c;模板测试(Stencil Test)会开始执行&#xff0c;和深度测试一样&#xff0c;它也可能会丢弃片段。接下来&#xff0c;被保留的片段会进入深度测试&#xff0c;它可能会丢弃更多的片段。模板测试…...

手机便签功能在哪里?如何在便签里添加文字图片视频?

手机已成为我们生活中不可或缺的工具&#xff0c;而在使用手机的过程中&#xff0c;我们经常需要随手记录一些重要的事情。那么&#xff0c;如何高效便捷地记录这些事情呢&#xff1f;答案就是使用手机便签软件。但是&#xff0c;有很多人不知道手机便签功能在哪里&#xff1f;…...

Java 中 List 的 7 种遍历方式 及 性能对比

# for i 循环 for (int i 0; i < list.size(); i) {list.get(i); }# 增强for循环 for (int item : list) { }# iterator for 循环 for (Iterator<Integer> iterator list.iterator(); iterator.hasNext(); ) {iterator.next(); }# iterator while 循环 Iterator<…...

【Github】git本地仓库建立与远程连接

文章目录 前言一、git简介二、git下载2.1下载地址 三、git安装3.1安装3.2 配置3.3 config设置&#xff08;增删改查&#xff09; 四.github与git连接——本地Git仓库4.1 建本地的版本库4.2 源代码放入本地仓库4.3提交仓库 五、github与git的连接——远程连接5.1 创建SSH Key5.2…...

【瑞萨零基础入门】瑞萨MCU零基础入门系列教程(更新连载中)

瑞萨MCU零基础入门系列教程 前言 得益于瑞萨强大的MCU、强大的软件开发工具(e studio)&#xff0c;也得益于瑞萨和RA生态工作室提供的支持&#xff0c;我们团队编写了《ARM嵌入式系统中面向对象的模块编程方法》&#xff0c;全书37章&#xff0c;将近500页: 讲解面向对象编程…...

Bean 的生命周期总结

目录 一、Bean生命周期的五个阶段 Bean的初始化 二、PostConstruct 和 PreDestroy 各自的效果 三、 实例化和初始化的区别 四、为什么要先设置属性在进⾏初始化呢&#xff1f; 一、Bean生命周期的五个阶段 Java 中的公共类称之为 Bean 或 Java Bean&#xff0c;而 Spring 中的…...

【Python】环境的搭建

前言 要想能够进行 Python 开发, 就需要搭建好 Python 的环境. 需要安装的环境主要是两个部分: 运行环境: Python开发环境: PyCharm 一、安装 Python 1.找到官方网站 官网&#xff1a;Welcome to Python.org 2.找到下载页面 点击download中的Windows 3.选择稳定版中的Win…...

2021 ICPC 昆明 I Mr Main and Windmills(直线与线段的交点)

2021 ICPC 昆明 I Mr. Main and Windmills(直线与线段的交点) I Mr. Main and Windmills 大意&#xff1a;给出一条线段 &#xff0c; 一个人从线段的起点走到线段的终点 &#xff0c; 线段的一侧有若干风车 &#xff0c; 当前的人在线段上的每一个位置观察风车都会得到一个顺…...

SpringCloudAlibaba Gateway(一)简单集成

SpringCloudAlibaba Gateway(一)简单集成 随着服务模块的增加&#xff0c;一定会产生多个接口地址&#xff0c;那么客户端调用多个接口只能使用多个地址&#xff0c;维护多个地址是很不方便的&#xff0c;这个时候就需要统一服务地址。同时也可以进行统一认证鉴权的需求。那么服…...

逻辑回归(Logistic Regression)

1.分类问题 在分类问题中&#xff0c;你要预测的变量 y是离散的值&#xff0c;我们将学习一种叫做逻辑回归 (Logistic Regression) 的算法&#xff0c;这是目前最流行使用最广泛的一种学习算法。 在分类问题中&#xff0c;我们尝试预测的是结果是否属于某一个类&#xff08;例…...

Leetcode129. 求根到叶子节点数字之和

力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 给你一个二叉树的根节点 root &#xff0c;树中每个节点都存放有一个 0 到 9 之间的数字。 每条从根节点到叶节点的路径都代表一个数字&#xff1a; 例如&#xff0c;从根节点到叶子节点的路径 1 ->…...

0401hive入门-hadoop-大数据学习.md

文章目录 1 Hive概述2 Hive部署2.1 规划2.2 安装软件 3 Hive体验4 Hive客户端4.1 HiveServer2 服务4.2 DataGrip 5 问题集5.1 Could not open client transport with JDBC Uri 结语 1 Hive概述 Apache Hive是一个开源的数据仓库查询和分析工具&#xff0c;最初由Facebook开发&…...

springboot项目打包优化,将所有第三方包单独打包至lib目录

在pom.xml中配置以下代码&#xff0c;随后使用mvnw clean package打包 <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><!-- 主…...

使用 Ccrypt 在 Linux 中加密/解密文件

Ccrypt 是一个用于数据加密和解密的命令行工具。Ccrypt 基于 Rijndael 密码,与 AES 标准中使用的密码相同。另一方面,在 AES 标准中,使用 128 位块大小,而 ccrypt 使用 256 位块大小。Ccrypt 通常使用 .cpt 文件扩展名来表示加密文件。 它是一个轻量级的工具,该工具的安装…...

poi3.10 excel xls 设置列宽行高背景色加粗

poi excel xls格式 设置列宽行高背景色加粗HSSFWorkbook wb new HSSFWorkbook(); Sheet sheet wb.createSheet("sheet1");HSSFCellStyle style wb.createCellStyle(); style.setFillForegroundColor(IndexedColors.LIGHT_TURQUOISE.getIndex());//背景色 style.se…...

揭秘分布式文件系统大规模元数据管理机制——以Alluxio文件系统为例

作者简介&#xff1a; 辭七七&#xff0c;目前大&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; 七七的闲谈 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f49…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 &#xff08;一&#xff09;实时滤波与参数调整 基础滤波操作 60Hz 工频滤波&#xff1a;勾选界面右侧 “60Hz” 复选框&#xff0c;可有效抑制电网干扰&#xff08;适用于北美地区&#xff0c;欧洲用户可调整为 50Hz&#xff09;。 平滑处理&…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中&#xff0c;合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号&#xff1f; 最小权限原则&#xf…...

MinIO Docker 部署:仅开放一个端口

MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...