行。我做了很糟糕的工作来解释我正在尝试做什么。我会再试一次,以便更清楚。
我有一个提交到cfquery
插入页面的变量列表。变量来自动态命名的表单字段,并使用cfloop
:
<cfloop list="#form.fieldnames#" index="item">
</cfloop>
我所拥有的是动态命名的表单字段和添加的值,如下所示:
<input type="hidden" name="ticketid_#some_number#" value="#some_quantity#">
为简洁起见,我们假设表单字段名称为ticketid_6,值为4.这可以是不同的名称和值(例如,ticketid_3的值为1),或者可能有几个类似的表单字段构造具有不同的名称和/或值。
因此,在插入页面上,我需要将4次ticketid_6(创建4个单独的行)插入到我的表中。因此,数据库中每个动态命名的表单字段的行乘以每个字段的值。
我希望能更好地解释它。
利,
我仍然对你在上一篇文章中的建议持开放态度,但我担心我可能没有清楚地解释我的情况,以便你给出最好的建议。在我弄清楚这一部分之后,我将重新解决这个问题。
答案 0 :(得分:0)
如果您需要遍历所有字段名称并将每个字段视为列表,则需要执行两个循环来插入每个项目。
<cfloop list="#form.fieldnames#" index="item"><!--- loop through all the form fields --->
<cfif find('ticketid_',item)><!--- if the form name contains 'ticketid_'. Use findNoCase if you want to ignore case sensitivity --->
<cfloop from="1" to="#form[item]#" index="counter"><!--- loop through the number in form.ticketid_ --->
<cfquery datasource="#dsn#">
INSERT INTO table (fieldname, fieldValue, TicketNum)
VALUES (
<cfqueryparam value="#item#" cfsqltype="cf_sql_varchar">,--fieldName from the form
<cfqueryparam value="#form[item]#" cfsqltype="cf_sql_varchar">--value of the fieldName in the form
<cfqueryparam value="#counter#" cfsqltype="cf_sql_integer">--ticket number being inserted
)
</cfquery>
</cfloop>
</cfif>
</cfloop>
您需要进行服务器端验证,以验证他们没有为输入框输入非数字编号,但假设您已完成此操作,那么这应该可以实现您所需要的。
答案 1 :(得分:-2)
您需要使用Evaluate
函数来获取表单动态输入字段值
试试这个
<input type="hidden" name="ticketid_#some_number#" value="#some_quantity#">
<cfloop list="#form.fieldnames#" index="item">
<cfoutpuy>Evaluate("ticketid_#item#")</cfoutpuy>
</cfloop>
答案 2 :(得分:-4)
您需要先将数据捆绑到XML结构中
<cfsavecontent variable="myFormData">
<cfoutput>
<ul class="xoxo">
<cfloop list="#form.fieldnames#" index="item">
<cfloop list="#form[item]#" index="eachItem">
<li><b>#xmlformat(item)#</b> <var>#xmlformat(eachItem)#</var>
</cfloop>
</cfloop>
</ul>
<cfoutput>
</cfsavecontent>
然后执行单个插入
<cfquery>
INSERT INTO table (formData)
VALUES (<cfqueryparam value="#myFormData#" cfsqltype="cf_sql_varchar">)
</cfquery>
提取数据时,您可以
请注意,数据作为HTML和XML插入