提前感谢您的帮助!
我的应用程序允许用户创建动态问题,其中包含与问题相关的n个动态答案。
允许用户构建这些内容的页面已经完成,并且可以完美地创建这些页面。
我坚持使用最有效的方式来构建更新功能。通常在更新期间,我会删除字段/关系并重建它们。这不是此应用程序中的选项,因为一旦输入答案,我需要保留它以用于报告目的。
因此,在更新过程中,我需要识别哪些答案是新的,并插入这些答案 - 而不是更新旧的答案。
需要一些帮助来思考这个,谢谢你们!
答案 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>
请记住,处理可以通过多种方式处理......这是一个概念证明。