2013-12-11 6 views
0

У меня есть форма в файле coldfusion, и я хочу добавить инструкцию if, чтобы проверить, что некоторые поля имеют в них текст, прежде чем они будут отправлены в хранимую процедуру. Таким образом, оператор if для проверки полей формы не является нулевым, если они являются некотором текстом, чтобы сказать «пожалуйста, введите данные» ...Заявление IF в Coldfusion

Я хочу поместить оператор if вокруг этого блока кода ...

<CFSTOREDPROC PROCEDURE="InsertOfficeLocation" DATASOURCE="#application.servernamesql02#"> 
<CFPROCPARAM VALUE="#country#" TYPE="IN" CFSQLTYPE="cf_sql_varchar" VARIABLE="@Country"> 
<CFPROCPARAM VALUE="#address#" TYPE="IN" CFSQLTYPE="cf_sql_varchar" VARIABLE="@Address"> 
<CFPROCPARAM VALUE="#address2#" TYPE="IN" CFSQLTYPE="cf_sql_varchar" VARIABLE="@Address2"> 
<CFPROCPARAM VALUE="#address3#" TYPE="IN" CFSQLTYPE="cf_sql_varchar" VARIABLE="@Address3"> 
<CFPROCPARAM VALUE="#address4#" TYPE="IN" CFSQLTYPE="cf_sql_varchar" VARIABLE="@Address4"> 
<CFPROCPARAM VALUE="#city#" TYPE="IN" CFSQLTYPE="cf_sql_varchar" VARIABLE="@City"> 
<CFPROCPARAM VALUE="#postcode#" TYPE="IN" CFSQLTYPE="cf_sql_varchar" VARIABLE="@PostCode"> 
<CFPROCPARAM VALUE="#receptionnumber#" TYPE="IN" CFSQLTYPE="cf_sql_varchar" VARIABLE="@ReceptionNumber"> 
<CFPROCPARAM VALUE="#mainnumber#" TYPE="IN" CFSQLTYPE="cf_sql_varchar" VARIABLE="@MainNumber"> 
<CFPROCPARAM VALUE="#faxnumber#" TYPE="IN" CFSQLTYPE="cf_sql_varchar" VARIABLE="@FaxNumber"> 
<CFPROCPARAM VALUE="#username#" TYPE="IN" CFSQLTYPE="cf_sql_varchar" VARIABLE="@Username"> 
<CFPROCPARAM VALUE="#timestamp#" TYPE="IN" CFSQLTYPE="cf_sql_varchar" VARIABLE="@Timestamp">  
    </CFSTOREDPROC> 
+2

Какую проблему вы столкнетесь, когда вы пробовали? (Обратите внимание: эта проверка должна быть выполнена заранее, т. Е. Не смешивать ее с кодом 'cfstoredproc') – Leigh

+0

Вы не используете имя переменной правильно. ColdFusion не поддерживает именованные параметры. Вы должны отправить свои параметры в том порядке, в котором их ожидает сохраненный proc. –

+0

@Leigh это то, что у меня есть atm: Но я не знаю, как вернуть какое-то сообщение в форме, чтобы сказать «Пожалуйста, введите значение» .... – jeffry

ответ

0

как он стоит с кодом вы показали нам до сих пор и, как вы сформулированные на ваш вопрос, вы должны только сделать что-то вроде:

<cfif len(form.country) AND len(form.address) ...> 
    <cfstoredproc >...</cfstoredproc> 
<cfelse> 
    Please enter all fields 
</cfif> 

Хотя я бы, вероятно, хочу сделать что-то лучше, например, разные сообщения об ошибках для каждого поля. Или использовать атрибут NULL на cfprocparam для передачи, например, нулевых значений для пустых полей.

Также вы говорите, что это значения формы; это хорошая идея охватить ваши переменные с соответствующей областью.

PS: вам нужно только указать атрибут variable на <cfprocparam>, когда тип OUT или INOUT

+0

Чтобы уточнить, атрибут 'variables' не означает, что вы думаете, что он делает. Это не ** используется для того, чтобы сказать «заполнить переменную хранимой процедуры' @ country »значением в' # country # '. (У CF используется эта функция с помощью другого атрибута, то есть' dbvarname'. Но поскольку Dan упомянутый, теперь он устарел.) Атрибут 'variable' используется только для параметров SQL' OUT'. Он позволяет хранимой процедуре заполнять переменную и возвращать ее на вызывающую страницу в CF. – Leigh

+1

@Leigh - oops, I сказал type = IN, когда я, очевидно, имел в виду OUT ... спасибо за ваш комментарий – duncan

+0

@ user3032507, не обижайтесь, но просто расширьте свой примерный код, чтобы включить каждое из полей, которые вас интересуют наверняка? ' ' – duncan