从CFLOOP获取价值

时间:2012-04-13 15:50:22

标签: coldfusion coldfusion-9 cfloop

我试图从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 

3 个答案:

答案 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会将其转换为您的列表,然后您可以循环遍历该列表。