2015-12-28 2 views
1

Возможно ли получить значение параметров с помощью индекса цикла в ColdFusion 9. Чтобы быть ясным, позвольте привести пример.Получение значений с использованием индекса цикла ColdFusion 9

Предположим, мы получаем параметры из текстовых полей html. Существует три текстовых поля с именем text_1, text_2, text_3.

Таким образом, без использования цикла нет проблем. Мы можем добавить значения в БД, но для трех текстовых полей, мы должны написать три вставки запроса, как:

insert into #application.schema#.#application.table# 
    (text_value) 
    values 
    (
    <cfqueryparam value="#attributes.props.text_1#" cfsqltype="cf_sql_varchar"> 
    ) 
insert into #application.schema#.#application.table# 
    (text_value) 
    values 
    (
    <cfqueryparam value="#attributes.props.text_2#" cfsqltype="cf_sql_varchar"> 
    ) 
insert into #application.schema#.#application.table# 
    (text_value) 
    values 
    (
    <cfqueryparam value="#attributes.props.text_3#" cfsqltype="cf_sql_varchar"> 
    ) 

Мой вопрос заключается в том, Есть ли какие-либо изменения, чтобы сделать это с помощью цикла? Что-то вроде:

<cfloop from="1" to="3" index="i"> 
    <cfquery name="insertTextBoxes" datasource="#application.dsn#" timeout="30"> 
     insert into #application.schema#.#application.table# 
     (text_value) 
     values 
     (
     <cfqueryparam value="#attributes.props.text_#i##" cfsqltype="cf_sql_varchar"> 
     )  
    </cfquery> 
</cfloop> 

Я пробовал различные способы, но не смог его решить. Я не могу получить значение, используя индекс цикла. Какие-либо предложения?

Спасибо!

+1

Все, что вам нужно, это ассоциативная запись массива, 'structName [" someStaticName _ "& counterVariable]', то есть 'attributes.props [" text _ "& i]'. Сделайте поиск по динамическим переменным формы. Существует множество примеров. – Leigh

+0

Голосование заново. Другой вопрос касается области формы. Это относится к извилистой структуре. –

+0

@ Почувствуйте это, что я искал. Спасибо огромное! Он уменьшил код, и теперь код стал более читаемым. – aeh

ответ

2

Вы не можете вставить такие значения, как октоторпий. Чтобы объединиться в CFM, вам нужно поставить их рядом друг с другом или использовать оператор concat &.

<cfqueryparam value="#attributes.props.text_##i#" cfsqltype="cf_sql_varchar"> 

ОДНАКО! ВЫШЕ НЕПРАВИЛЬНО! Потому что #attributes.props.text_# не является реальной переменной, это сломается.

Лучшее, что вам нужно сделать, это петля правильно, над объектом атрибутов!

<cfloop collection="#attributes.props#" item="item"> 
    <cfquery name="insertTextBoxes" datasource="#application.dsn#" timeout="30"> 
     INSERT INTO #application.schema#.#application.table# (text_value) 
     VALUES (
      <cfqueryparam value="#item#" cfsqltype="cf_sql_varchar"> 
     )  
    </cfquery> 
</cfloop> 

Таким образом, (мне нужно пересмотреть свой синтаксис, но изучить логику!) Поможет избежать этих надоедливых вопросов Concat и непосредственно перебираем эти свойства приписывают хорошие и аккуратные, как.

+0

не должно быть значением в вашем queryparam 'attributes.props [item]'? –

+0

В настоящий момент проблема заключается в том, что атрибуты .props не содержат только значения text_, у него есть другие значения, которые я не хочу вставлять в них как text_value. – aeh

+1

, тогда в цикле также проверьте, начинается ли оно с 'text_' –

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