Html 如何仅在coldfusion中从cfloop结果集modified record在表中插入记录

Html 如何仅在coldfusion中从cfloop结果集modified record在表中插入记录,html,coldfusion,coldfusion-9,Html,Coldfusion,Coldfusion 9,我试图从结果集循环中识别修改过的记录。我需要找到修改过的记录并插入到coldfusion中的其他表中 我的成绩集 <cfquery name="xyz" datasource="xyz"> Select * from Table_xyz </cfquery> <form name="ABC" action="#CGI.SCRIPT_NAME#" method="post"> <table id="tbl" cellpadding

我试图从结果集循环中识别修改过的记录。我需要找到修改过的记录并插入到coldfusion中的其他表中

我的成绩集

 <cfquery name="xyz" datasource="xyz">
  Select * from Table_xyz
    </cfquery>

  <form name="ABC" action="#CGI.SCRIPT_NAME#" method="post">
   <table id="tbl" cellpadding="1" border="1px" style="width:100px">    
    <tr bgcolor="##3333CC">                 
     <td width="60"><font size=-1 color="White">Account</font></td>      
        <td width="250"><font size=-1 color="White">Description</font></td>      
        <td width="150"><font size=-1 color="White">PRD</font></td>     
       <td width="200"><font size=-1 color="White">$$/Month</font></td>  
    </tr>
    <cfoutput query="xyz> 
       <tr> 
       <td><input type="text" name="acct" value="#acct#"></td>
       <td><input type="text" name="desc" value="#Description#"></td>
        <td><input type="text" name="PRD" value="#PRM#"></td> 
       <td><input type="text" name="PRM" value="#PRM#"></td>
      </tr> 
          <input type="submit" name="submit" value="submit">

  </cfoutput>

从表xyz中选择*
账户
描述
珠三角
$$/月
这是关键:

<cfoutput query="xyz"> 
  <tr> 
    <td><input type="text" value="#acct#"></td>
    <td><input type="text" value="#Description#"></td>
    <td><input type="text" value="#PRM#"></td> 
    <td><input type="text" value="#PRM#"></td>
  </tr> 

目前,这些表单字段没有名称属性。你需要一个,它需要包括一些东西来识别记录。大概是这样的:

<cfoutput query="xyz"> 
  <tr> 
    <td><input type="text" name="acct#id#" value="#acct#"></td>
    <td><input type="text" name="description#id#" value="#Description#"></td>
    <td><input type="text" name="prm#id#" value="#PRM#"></td> 
    <td><input type="text" name="something#id#" value="#PRM#"></td>
  </tr> 

然后添加隐藏字段。下面是acct的一个示例

 <input type="hidden" name="orig_acct#id#" value="#acct#">


这仍然在cfoutput块中。提交表单时,您可以将用户在文本框中的内容与隐藏字段中的内容进行比较。这将识别更改,您可以采取必要的措施。

我认为最简单的答案可能是在用户提交更新时在新表中插入

<cfif structKeyExists(form, "submit")>
<cfquery name="abc" datasource="xyz">
        INSERT INTO Table_abc VALUES (
            <cfqueryparam cfsqltype="cf_sql_integer" value="#form.id#">
            ,<cfqueryparam cfsqltype="cf_sql_varchar" value="#form.acct#">
            ,<cfqueryparam cfsqltype="cf_sql_varchar" value="#form.desc#">
            ,<cfqueryparam cfsqltype="cf_sql_integer" value="#form.PRD#">
            ,<cfqueryparam cfsqltype="cf_sql_integer" value="#form.PRM#">
            ) 
    </cfquery>    

    <cfquery name="xyz" datasource="xyz">
        UPDATE Table_xyz SET 
            acct = <cfqueryparam cfsqltype="cf_sql_varchar" value="#form.acct#">
            ,Description = <cfqueryparam cfsqltype="cf_sql_varchar" value="#form.desc#">
            ,PRD = <cfqueryparam cfsqltype="cf_sql_integer" value="#form.PRD#">
            ,PRM = <cfqueryparam cfsqltype="cf_sql_integer" value="#form.PRM#">
        WHERE id = <cfqueryparam cfsqltype="cf_sql_integer" value="#form.id#">
    </cfquery>
</cfif>

在表中插入abc值(
,
,
,
,
) 
更新表xyz集
账户=
,说明=
,珠三角=
,PRM=
其中id=
如果由于某种原因无法做到这一点,我会尝试向现有表中添加修改的_标志和/或修改的_时间戳字段,以便您可以将记录标记为已修改以及何时修改

<cfif structKeyExists(form, "submit")>
    <cfquery name="abc" datasource="xyz">
        UPDATE Table_xyz SET 
            acct = <cfqueryparam cfsqltype="cf_sql_varchar" value="#form.acct#">
            ,Description = <cfqueryparam cfsqltype="cf_sql_varchar" value="#form.desc#">
            ,PRD = <cfqueryparam cfsqltype="cf_sql_integer" value="#form.PRD#">
            ,PRM = <cfqueryparam cfsqltype="cf_sql_integer" value="#form.PRM#">
            ,modified_flag = <cfqueryparam cfsqltype="cf_sql_varchar" value="#form.modified_flag#">
            ,modified_timestamp = <cfqueryparam cfsqltype="cf_sql_varchar" value="#form.modified_timestamp#">
        WHERE id = <cfqueryparam cfsqltype="cf_sql_integer" value="#form.id#">
    </cfquery>
</cfif>

<cfquery name="xyz" datasource="xyz">
    Select * from Table_xyz
</cfquery>


<table id="tbl" cellpadding="1" border="1px" style="width:100px">   
    <tr bgcolor="##3333CC">                 
        <td width="60"><font size=-1 color="White">Account</font></td>      
        <td width="250"><font size=-1 color="White">Description</font></td>     
        <td width="150"><font size=-1 color="White">PRD</font></td>    
        <td width="200"><font size=-1 color="White">$$/Month</font></td>  
    </tr>
    <cfoutput query="xyz"> 
    <form name="ABC" action="#CGI.SCRIPT_NAME#" method="post">
    <input type="hidden" name="id" value="#id#">
    <input type="hidden" name="modified_flag" value="y"> 
    <input type="hidden" name="modified_timestamp" value="#DateFormat(now(), "mm/dd/yy hh:mm:ss")#">
    <tr> 
        <td><input type="text" name="acct" value="#acct#"></td>
        <td><input type="text" name="desc" value="#Description#"></td>
        <td><input type="text" name="PRD" value="#PRD#"></td> 
        <td><input type="text" name="PRM" value="#PRM#"></td>
        <td><input type="submit" name="submit" value="submit"></td>
    </tr>
    </form>

    </cfoutput>
</table>

更新表xyz集
账户=
,说明=
,珠三角=
,PRM=
,已修改的_标志=
,修改的时间戳=
其中id=
从表xyz中选择*
账户
描述
珠三角
$$/月
我对你的表格做了一些小改动。最值得注意的是,我在输出循环中拉入了表单标记,这样当用户单击submit时,每个记录都会单独提交,并且还为每个记录添加了一个“id”字段,以便您能够可靠地确定用户正在更新的记录。此外,我将submit按钮移动到表中,使其显示在其功能记录的旁边


将记录复制到第二个表后,可以重置修改的\u标志和/或修改的\u时间戳字段,以便确定是否再次编辑记录。

。。。我们需要更多的信息。您如何知道修改了哪个记录?您的意思是当用户修改文本框时?@Matt-如果用户修改任何结果集值..并提交页面..我们需要识别修改后的值并插入到表中..谢谢!循环中出现的结果集超过50条记录。我如何知道哪一条是修改过的记录,以及如何更新或将更新后的值插入表中?谢谢!你如何解释这个答案的最后两句话。