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

news/2024/7/10 23:59:14 标签: 前端, jquery, 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.坏的一面就是,直接在数据库插入数据,会频繁操作数据库。对数据库不好。


http://www.niftyadmin.cn/n/5003183.html

相关文章

直线导轨的替换方法

目前&#xff0c;直线导轨的使用率持续上升&#xff0c;已广泛应用在各种各样的行业中&#xff0c;可替换性高是其广泛使用的重要原因之一&#xff01;直线导轨的替换指的就是导轨和滑块可以单出&#xff0c;不用整套替换。 市面上使用率最高的直线导轨品牌应该就是台湾*银了&a…

使用scp在两个linux系统之间传输文件

使用scp在两个linux系统之间传输文件 问题背景拷贝文件首先我们要从源设备&#xff08;本文中是矩池云自己的服务器&#xff09;传输文件至目标设备&#xff08;本文中是A100设备&#xff09;传输一个文件传输一个文件夹 从目标设备&#xff08;本文中是A100设备&#xff09;下…

render的使用

在很多前端框架中&#xff0c;render 函数通常接受三个参数&#xff1a;val、rec和idx&#xff0c;但具体的参数取决于你的应用框架和用法。通常情况下&#xff1a; val 表示当前要渲染的数据值&#xff08;通常是当前单元格的值&#xff09;。 rec 表示当前行的记录或数据对象…

【AWS实验】 使用 Lake Formation 设置数据湖

文章目录 实验概览目标实验环境任务 1&#xff1a;探索实验环境任务 1.1&#xff1a;在 S3 存储桶中创建文件夹任务 1.2&#xff1a;加载 AWS Cloud9 IDE任务 1.3&#xff1a;将数据复制到 S3 存储桶 任务 2&#xff1a;设置 AWS Lake Formation任务 2.1&#xff1a;注册 Amazo…

UG NX二次开发(C++)-采用ShellExecute默认打开文件

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1、前言2、ShellExecute函数说明2.1函数原型:2.2 参数说明:2.3 返回值2.4 打开记事本的例子3 默认打开excel文件的程序源码3.1 加入头文件3.2 在ufusr中加入代码1、前言 采用C++进行UG NX二次开…

Android之 Canvas绘制

一 Canvas介绍 1.1 Canvas 是绘制图形的重要类之一&#xff0c;它可以在 View 或 SurfaceView 上绘制各种图形和文本. 1.2 要创建 Canvas&#xff0c;首先需要有一个 View 或 SurfaceView 对象&#xff0c;在 View 或 SurfaceView 的绘制方法中&#xff0c;可以通过 Canvas 的…

在Qt的点云显示窗口中添加坐标轴C++

通过摸索整理了三个方法&#xff1a; 一、方法1&#xff1a;//不推荐&#xff0c;但可以参考 1、通过pcl的compute3DCentroid()方法计算点云的中心点坐标&#xff1b; 函数原型如下&#xff1a; compute3DCentroid (const pcl::PointCloud<PointT> &cloud, Eigen…

ORB-SLAM2算法13之跟踪线程Tracking

文章目录 0 引言1 跟踪线程Tracking1.1 概述1.2 初始化1.2.1 单目初始化1.2.2 双目/RGBD初始化 1.3 跟踪方法1.3.1 恒速模型跟踪1.3.2 参考关键帧跟踪1.3.3 重定位跟踪 1.4 局部地图跟踪1.4.1 流程1.4.2 更新局部关键帧1.4.3 更新局部地图点1.4.4 进一步优化 1.5 关键帧生成1.5…