2016-03-22 6 views
0

Пытается использовать имена полей динамической формы. Я могу получить их на странице, но я не могу ссылаться на них, чтобы вставлять или выбирать из таблицы. Я сделал это раньше, динамически назвав поля формы цифрами, а затем прокручивая их, чтобы вставлять данные в таблицу, но эти элементы будут вставлены в разные таблицы, поэтому я хотел бы ссылаться на них по имени, и я попробовал несколько вариантов и Я получаю сообщение об ошибке, которую я пробовал до сих пор. Что я имею в форме от 4 до 6 полей с кнопкой «Добавить» для каждой секции. Я хочу нажать кнопку «Добавить» и вставить поля в определенную таблицу, и у меня есть таблица ниже каждого раздела, которая затем покажет только что добавленные данные.Я не могу ссылаться на динамическую переменную

<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> 

Поля формы (петли из запроса, чтобы добавить идентификатор, имя поля и 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> 

Кнопка находится в другом цикле через другой запрос

Я попытался это тоже в цикле и увеличившая х

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

Но потом, когда я помещаю его в

<cfif structKeyExists(form,"Add")> 

Я получаю сообщение об ошибке, что х не определено

#variables["enclTable" & x]# 

не работает. Я не уверен, что я делаю неправильно. Я могу создать динамическую переменную, но не могу ссылаться на нее после того, как что-то с ней делать. Извините, если это много объяснений, я хотел быть внимательным со всеми подробностями.

+2

Вы находитесь на правильном пути с обозначением массива. Но вам нужна область формы, а не область переменных. –

+0

* enclTable undefined * Где в коде вы определяете поле формы или переменную с именем * enclTablexxxx *? Я не вижу этого в коде выше, так что сообщение об ошибке не удивительно. Какова фактическая ценность 'name =" # inpName # "'? В стороне, используя клиентские значения в запросе, например, ставит базу данных под угрозу для SQL-инъекции. – Leigh

+0

@leigh, enclTable исходит из запроса getFormHeadings. inpName исходит из запроса getFormFields. enclTable - это имя таблицы, а inpName - это имя поля в этой таблице. Я пытался почтить то, что держалось в enclTable, чтобы использовать для вставки записей. Переменная inpName содержит имя полей, а enclTable - имя таблицы. Я не могу ссылаться на них, чтобы получить значения даже после их индексации. У меня есть другая идея, я собираюсь попробовать идею Дэна Бракука. Однако любые другие предложения были бы весьма полезными. Благодаря! – 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]; 

, а потом я что-то делать с этими переменными.

Смежные вопросы