Coldfusion - 更新动态表单字段

时间:2011-08-17 04:46:10

标签: dynamic coldfusion

提前感谢您的帮助!

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

允许用户构建这些内容的页面已经完成,并且可以完美地创建这些页面。

我坚持使用最有效的方式来构建更新功能。通常在更新期间,我会删除字段/关系并重建它们。这不是此应用程序中的选项,因为一旦输入答案,我需要保留它以用于报告目的。

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

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

2 个答案:

答案 0 :(得分:1)

为了使这样的事情发生,我通常在我要更新的每个字段旁边都有一个隐藏字段,其中包含其ID。如果字段的匹配ID是“0”,那么我知道它是一个新项目而不是已经存在且需要更新的项目。因此,当您遍历FORM结构时,对非零ID运行更新,并在其余部分上插入。

答案 1 :(得分:0)

我采用了与Dan类似的方法,但在字段名称中包含了ID。例如,如果我有三个答案字段,其中一个是新的,名称可能是'Answer210','Answer211'和'Answer0'。

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

<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>

请记住,处理可以通过多种方式处理......这是一个概念证明。