2012-04-13 40 views
0

我想從CFLOOP中提取值並轉儲它們,但我似乎錯過了某些東西。我需要從第一個循環中提取openHours並從第二個循環中提取openMinutes,然後將它們放入變量中運行查詢以提交數據庫中的值。從CFLOOP獲取值

這是我的結構,當我傾銷#形式#。我需要得到變量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

爲了讓我們能夠幫助您,您需要將代碼精簡到本質。只留下導致問題的東西;刪除所有額外的顯示邏輯。 – ale 2012-04-13 16:27:28

+0

謝謝,我現在就清理一下 – Geo 2012-04-13 16:29:57

+0

看到你的數據看起來像一個例子也是有幫助的。 – ale 2012-04-13 16:33:15

回答

0

我想你想這一點,或非常類似的東西:

<cfoutput> 
<cfloop from="1" to="7" index="CountVar">   
    #openHours[CountVar]#<br> 
</cfloop> 
</cfoutput> 
+0

我已經試過了。我也嘗試過''但它不起作用。它只是給了我更多的信息,例如我們openHours1 [24]' – Geo 2012-04-13 16:18:35

1

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

form["openHours" & CountVar] 

作爲一個範圍,形式也是一個結構,你可以使用數組符號來獲得在價值。

這是使用動態表單字段名稱的關鍵。

澄清:

form.openHours7 

相當於

form["openHours7"] 

第一通常被稱爲點表示法,第二作爲陣列符號(因爲它類似於如何引用數組元素

由於括號中的值是一個字符串,因此可以用一個變量替換它。

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

或者,當我打開時,一個文字字符串和一個變量的組合。

你不能用點符號來做到這一點。 (至少不是沒有使用evaluate(),通常不建議這樣做)。

The documentation有很多關於如何使用結構的信息,包括不同的記法方法。

+0

你能讓它更清楚一點嗎?我不熟悉這個符號。謝謝 – Geo 2012-04-13 17:44:06

+0

@Crematorio:當然。那個更好嗎? – ale 2012-04-13 17:51:17

+0

是更清晰。我沒有太多的CF經驗,所以謝謝你解釋所有的東西 – Geo 2012-04-13 18:43:44

0

對不起,這對我來說有些模糊,但那從來沒有阻止我跳進去。你會有相同數量的開放時間和開放分鐘嗎?你可以循環遍歷form.fieldnames嗎?就目前而言,您有名爲openhours1-N的字段,這聽起來像openminutes1-N尚未添加。看起來你可以循環使用字段名,如果字段以openhours開頭,你可以從最後得到數字,然後你可以很容易地創建相應的openminutes字段。正如Al早些時候所說的那樣,你很可能會使用數組符號來從表單結構中獲取值。

另一個想法是表單字段名稱不必是唯一的。如果你有多次「openhours」,ColdFusion會把它變成一個列表給你,然後你可以遍歷這個列表。

+0

感謝您的回覆。我正在重寫這個代碼,因爲我使用了一個類似代碼的早期版本,這就是爲什麼我有這麼多問題。我完成後會更新這篇文章。再次感謝 – Geo 2012-05-01 14:50:34