我试图从CFLOOP中提取值并转储它们但我似乎丢失了一些东西。我需要从第一个循环中提取openHours并从第二个循环中提取openMinutes并将它们放入变量中然后运行查询提交数据库中的值。
当我转出#form#时,这是我的结构。我需要得到变量form.openHours1
问题是openHours通过#CountVar#得到它的数字所以基本上我需要转出像#form.openHours [CountVar]#
struct
FIELDNAMES POSTITNOW,OPENHOURS1,OPENHOURS2,OPENHOURS3,OPENHOURS4,OPENHOURS5,OPENHOURS6,OPENHOURS7
OPENHOURS1 13
OPENHOURS2 13
OPENHOURS3 12
OPENHOURS4 0
OPENHOURS5 0
OPENHOURS6 0
OPENHOURS7 0
POSTITNOW YES
答案 0 :(得分:1)
而不是#form.openHours[CountVar]#
你想要的是:
form["openHours" & CountVar]
作为范围,FORM也是一个结构,您可以使用数组表示法来获取值。
这是使用动态表单字段名称的关键。
澄清:
form.openHours7
相当于
form["openHours7"]
第一种通常称为点符号,第二种称为数组符号(因为它类似于引用数组元素的方式。
由于括号中的值是一个字符串,您可以将其替换为变量。
<cfset fieldToUse = "openHours7">
<cfoutput>#form[fieldToUse]#</cfoutput>
或者,正如我打开的那样,是一个文字字符串和一个变量的组合。
你不能用点符号真正做到这一点。 (至少不使用evaluate(),通常不推荐使用。)
The documentation有很多关于如何使用结构的信息,包括不同的符号方法。
答案 1 :(得分:0)
我想你想要这个或类似的东西:
<cfoutput>
<cfloop from="1" to="7" index="CountVar">
#openHours[CountVar]#<br>
</cfloop>
</cfoutput>
答案 2 :(得分:0)
对不起,这对我来说有点模糊,但这从来没有阻止我跳入。你是否会有相同数量的开放时间和开放时间?你能直接遍历form.fieldnames吗?就像现在一样,你有一个名为openhours1-N的字段,它听起来像openminutes1-N尚未添加。看起来你可以循环遍历字段名,如果字段以openhours开头,你可以得到最后的数字,然后你就可以轻松地创建相应的openminutes字段。正如Al早先说的那样,你很可能会使用数组表示法从表单结构中获取值。
另一个想法是表单字段名称不必是唯一的。如果您多次出现“openhours”,ColdFusion会将其转换为您的列表,然后您可以循环遍历该列表。