2011-08-17 66 views
1

感谢您的帮助!Coldfusion - 更新动态表单字段

我的应用程序允许用户创建动态问题,其中有n个与问题相关的动态答案。

允许用户构建这些页面是完整的,并且完美地创建这些作品。

我被困在构建更新能力的最有效方式。通常在更新期间,我会放弃字段/关系并重建它们。这不是这个应用程序的选项,因为一旦输入了答案,我需要保留它以用于报告目的。

因此,在更新期间,我需要识别哪些答案是新的,并插入这些答案 - 而不是更新旧答案。

需要一些帮助,思考这一个通过,谢谢你们!

回答

1

为了实现这样的事情,我通常会在每个要更新的字段旁边都有一个隐藏字段,其中包含其ID。如果某个字段的匹配ID是“0”,那么我知道这是一个新项目,而不是已存在并需要更新的项目。因此,当您循环访问FORM结构时,请在非零ID上运行更新,然后插入其余部分。

0

我采取了与丹类似的方法,但在字段名称中包含了ID。例如,如果我有三个答案字段,其中一个是新的,则名称可能是“答案210”,“答案211”和“答案0”。

当我处理表单时,我可以遍历每个字段,获取文本之后的数字 - “回答” - 并相应地处理数据。你最终会做什么是这样的:

<cfoutput> 
<cfif isDefined("form.FIELDNAMES")> 

    <cfloop index="x" list = "#form.fieldnames#"> 
     <cfif findNoCase('answer',x) NEQ 0> 
      <cfset varInteger = replaceNoCase(x,'Answer','')> 
      <cfif varInteger EQ 0> 
       Insert Answer text: #form[x]# with ID of #varInteger#<br /> 
      <cfelse> 
       Update Answer text: #form[x]# with ID of #varInteger#<br /> 
      </cfif>  
     </cfif> 
    </cfloop> 

</cfif> 
</cfoutput> 

牢记处理可以处理任何数量的方式......这是概念证明。