Forms Coldfusion:插入父/子动态表单字段

Forms Coldfusion:插入父/子动态表单字段,forms,dynamic,coldfusion,field,Forms,Dynamic,Coldfusion,Field,需要一些帮助来思考如何处理这个问题 我有一个动态表单,允许用户创建问题。他们可以有一对多的问题 然后,这些问题又可以有一对多的答案 UI由jquery驱动并完成。字段名称将发布到处理页面,如下所示: 问题看起来像:问题1、问题2、问题3等等 答案看起来像:问题1-答案1,问题1-答案2,问题2-答案1,等等 我知道我需要在问题上循环,插入,获取新ID,并将其应用于答案,以在数据库中建立问题和答案之间的关系 至于如何从技术上解决这个问题,我的第一个猜测是构建一个问题数组,数组的第二列是一个答案数组

需要一些帮助来思考如何处理这个问题

我有一个动态表单,允许用户创建问题。他们可以有一对多的问题

然后,这些问题又可以有一对多的答案

UI由jquery驱动并完成。字段名称将发布到处理页面,如下所示:

问题看起来像:问题1、问题2、问题3等等

答案看起来像:问题1-答案1,问题1-答案2,问题2-答案1,等等

我知道我需要在问题上循环,插入,获取新ID,并将其应用于答案,以在数据库中建立问题和答案之间的关系

至于如何从技术上解决这个问题,我的第一个猜测是构建一个问题数组,数组的第二列是一个答案数组。然后我会在阵列上循环


帮助?:)谢谢

不要将所有的问题和答案插入一个包含大量循环和逻辑的批量语句中,而是在用户添加它们时插入它们。i、 e.听起来您需要一个“添加另一个问题”按钮,使用javascript[Ajax?]添加另一个问题字段-也可以使用该按钮将问题插入数据库中。

类似的操作可以实现以下目的:

<cfloop list="#form.fieldNames#" index="field">
<!--- yes, i used len('question') rather than '8' for readability--->
<cfif len(field) gt len('Question') AND left(lCase(field), len('Question')) eq 'question'  and listLen(field,'-') eq 1>
    <cfset question = form[field]>
    <!--- insert question into database  --->
    <cfloop list="#form.fieldNames#" index="answerField">
        <cfif findNoCase(field, answerField) and listLen(answerField) gt 1>
            <cfset answer = form[answerField] >
            <!--- answer for same question, insert into database --->
        </cfif>
    </cfloop>
</cfif>

我们所做的是在表单的字段上循环,并查找问题。当我们找到一个,我们插入到数据库中。然后我们循环查找该问题的答案并将其插入数据库

我们如何找到问题字段:

 <cfif len(field) gt len('Question') 
    AND left(lCase(field), len('Question')) eq 'question'  and 
    listLen(field,'-') eq 1>

如果字段长度超过字符串“question” 剩下的8个字符是“问题” 没有比这更有趣的了

我们如何找到答案:

 <cfif findNoCase(field, answerField) and listLen(answerField) gt 1>

如果问题字段是名称的一部分 它有一个破折号,所以不止一个元素


有意义吗?

我以前也处理过类似的问题,只是表单上有多达5级的存档数据。在这种情况下,我们使用Javascript构建数据结构,并将其转换为JSON,然后通过AJAX将其发送到服务器。然后,CF使用JSONDeSerialize()将其转换为一行代码中的结构的继承结构。您正在向客户推进更多的工作,但这是已经定义了结构的地方,因此在那里做起来更容易?

问题和答案的顺序重要吗?不太重要。。尽管我可能会在以后添加排序问题的功能