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

时间:2011-07-13 05:02:33

标签: forms dynamic coldfusion field

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

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

然后问题可以反过来与他们相关的一对多答案。

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

问题如下:问题1,问题2,问题3等

答案如下:Question1-Answer1,Question1-Answer2,Question2-Answer1等

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

至于如何在技术上接近这个,我的第一个猜测是构建一个问题数组,数组的第二列是一组答案。然后我只是循环遍历数组。

帮助? :)谢谢!

3 个答案:

答案 0 :(得分:0)

不要在批量陈述中插入所有问题和答案,而是使用大量循环和&逻辑,在用户添加它们时插入它们。即听起来你需要一个“添加另一个问题”按钮,使用javascript [Ajax?]添加另一个问题字段 - 使用它来在数据库中插入问题。

答案 1 :(得分:0)

这样的事情可以解决问题:

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

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

有意义吗?

答案 2 :(得分:0)

之前我曾遇到过类似的问题,除了我们在表单上有多达5级的层次数据。在这种情况下,我们使用Javascript构建数据结构并将其转换为JSON并通过AJAX将其发送到服务器。 CF然后只使用JSONDeSerialize()将其转换为一行代码中的层次结构。你正在把更多的工作推到客户端,但那是已经定义了结构的地方,所以在那里做更容易吗?