2016-03-22 29 views
0

嘗試使用動態表單字段名稱。我可以讓他們在頁面上,但我不能引用他們插入或從表中選擇。我之前完成了這個工作,用數字動態地命名錶單域,然後循環遍歷它們以將數據插入表中,但這些項目將插入到不同的表中,因此我想通過名稱引用它們,並嘗試了幾個選項,到目前爲止,我嘗試了所有我嘗試過的錯誤。 我在表單上有4到6個字段,每個部分都有一個Add按鈕。我想單擊添加按鈕並將字段插入到特定的表中,然後在每個部分下方都有一張表格,然後顯示剛剛添加的數據。我無法引用動態變量

<cfif structKeyExists(form,"Add")> 
    <cfquery name = "getTableColumnHeadings"> 
     SELECT * FROM '#enclTable#' <<< errors here >>> enclTable is undefined 
    </cfquery> 
    <center><cfdump var = "#enclTable#"></center> <<< and here >>>  enclTable is undefined 
</cfif> 

表單字段(循環從查詢中添加字段的ID,姓名和MAXLEN和按鈕的id)...

<cfloop query ="getFormHeadings"> 
    <cfloop query = "getFormFields"> 
     <input type="input" class="form-control" id="#inpID#" name="#inpName#" maxlength="#inpLen#"> 
    </cfloop> 
    <button class="btn btn-blue btn-block" type="submit" name="Add" id="#enclTable#"> 
</cfloop> 

按鈕是另一回路通過另一個查詢

我想這在一個循環,並增加了x

<cfset variables["encl#x#"] = "#enclTable#"> 

但是當我把它放在

<cfif structKeyExists(form,"Add")> 

我得到的是未定義X

#variables["enclTable" & x]# 

也不能工作的錯誤。我不確定我做錯了什麼。我可以創建動態變量,但是我無法用它做任何事情之後引用它。對不起,如果這是很多解釋,我想徹底詳細瞭解所有細節。

+2

您在數組符號的正確軌道上。但是你想要表單範圍,而不是變量範圍。 –

+0

* enclTable未定義*代碼中的哪個位置定義了名爲* enclTablexxxx *的表單字段或變量?我沒有在上面的代碼中看到它,所以這個錯誤信息並不奇怪。 'name =「#inpName#」'的實際值是多少?另外,在查詢中使用客戶端提供的值會使數據庫處於SQL注入風險中。 – Leigh

+0

@leigh,enclTable來自查詢getFormHeadings。 inpName來自查詢getFormFields。 enclTable是表的名稱,inpName是該表中字段的名稱。我試圖尊崇enclotable中用來插入記錄的東西。變量inpName保存字段的名稱,而enclTable保存表的名稱。我無法引用它們在索引它們之後獲取值。我有另外一個想法,我將與Dan Bracuk的想法一起嘗試。任何其他建議,將不勝感激。謝謝! – malibu65k

回答

0

以下是我如何處理這種情況。該形式如下:

<cfoutput query="GetRecords"> 
<cfinput type="hidden" name="OldSpelling#DrugId#" value="#StandardSpelling#"> 
<cfinput type="hidden" name="OldInclude#DrugId#" value="#IncludeInReport#"> 
<cfinput type="hidden" name="OldCategory#DrugId#" value="#CategoryID#"> 
<tr> 
<td>#DrugName#</td> 
<td> 

的處理是這樣的:

<cfloop list="#form.fieldnames#" index="ThisField"> 
<cfscript> 
CheckForDifference = false; 
if (left(ThisField, 10) == "oldinclude"){ 
ThisId = RemoveChars(ThisField, 1, 10); 
ThisOldInclude = form[ThisField]; 
ThisInclude = form["Include" & ThisID]; 

,然後我做這些變量的東西。