0

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

3 回答 3

1

而不是#form.openHours[CountVar]#你想要的是:

form["openHours" & CountVar]

作为范围,FORM 也是一个结构,您可以使用数组表示法来获取值。

这是使用动态表单字段名称的关键。

澄清:

form.openHours7

相当于

form["openHours7"]

第一个通常称为点表示法,第二个称为数组表示法(因为它类似于您引用数组元素的方式。

由于括号中的值是字符串,您可以将其替换为变量。

<cfset fieldToUse = "openHours7">
<cfoutput>#form[fieldToUse]#</cfoutput>

或者,正如我打开的那样,文字字符串和变量的组合。

你不能用点符号真正做到这一点。(至少不使用评估(),通常不推荐。)

该文档有很多关于如何使用结构的信息,包括不同的符号方法。

于 2012-04-13T17:41:42.873 回答
0

抱歉,这对我来说有点模糊,但这并没有阻止我参与进来。你是否会有相同数量的 openhours 和 openminutes?你能循环遍历form.fieldnames吗?就目前而言,您有名为 openhours1-N 的字段,听起来 openminutes1-N 尚未添加。似乎您可以遍历字段名,如果该字段以 openhours 开头,您会从末尾得到数字,然后您可以轻松创建相应的 openminutes 字段。正如 Al 之前所说的(很多),您很可能会使用数组表示法从表单结构中获取值。

另一个想法是表单字段名称不必是唯一的。如果您多次出现“openhours”,ColdFusion 会将其转换为您的列表,然后您可以遍历该列表。

于 2012-04-25T02:45:17.720 回答
0

我想你想要这个,或者非常相似的东西:

<cfoutput>
<cfloop from="1" to="7" index="CountVar">        
     #openHours[CountVar]#<br>
</cfloop>
</cfoutput>
于 2012-04-13T16:11:50.443 回答