需要一些帮助来思考如何处理这个问题。
我有一个动态表单,允许用户创建问题。他们可以有一到多个问题。
然后问题可以反过来与他们相关的一对多答案。
UI由jquery驱动并完成。字段名称发布到处理页面,如下所示:
问题如下:问题1,问题2,问题3等
答案如下:Question1-Answer1,Question1-Answer2,Question2-Answer1等
我知道我需要循环遍历问题,插入,获取新ID,并将其应用于答案,以便在我的数据库中建立问题与答案之间的关系。
至于如何在技术上接近这个,我的第一个猜测是构建一个问题数组,数组的第二列是一组答案。然后我只是循环遍历数组。
帮助? :)谢谢!
答案 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()将其转换为一行代码中的层次结构。你正在把更多的工作推到客户端,但那是已经定义了结构的地方,所以在那里做更容易吗?