2013-11-12 2 views
0

Я новичок в ColdFusion. Кто-нибудь знает, почему этот код не работает. Когда я оставляю форму null, она не отображает 100 в базе данных.ColdFusion cfset issue

<cfif isdefined("FORM.Percentage")> 
    <cfset Form.Percentage = #Form.Percentage#> 
<cfelse> 
    <cfset Form.Percentage = 100> 
</cfif> 

<cfquery name="percent" datasource ="abc"> 
Insert into Employees 
    (Percentage) 
Values 
    (#Form.Percentage#)  
</cfquery> 
+1

Даже если форма равна null, она по-прежнему передается на страницу. Вместо этого вы должны проверить len (trim (form.percentage)) или isNumeric (form.Percentage) вместо isDefined(), поэтому ваш form.percentage никогда не установлен равным 100. – BKK

+0

что он показывает в базе данных? Попробуйте окружить cfquery тегами – DG3

+0

@MattBusche: вы правы – DG3

ответ

14

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

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

<cfif NOT len(trim(FORM.Percentage))> 
    <cfset Form.Percentage = 100> 
<cfif> 

<cfquery result="percent" datasource="abc"> 
Insert into Employees (Percentage) 
Values (
    <cfqueryparam cf_sql_type="cf_sql_integer" value="#Form.Percentage#"> 
) 
</cfquery> 

При использовании cfquery с вкладышем имя атрибута не дает ничего. Использование result позволит вам просматривать некоторые данные о запросе, если это необходимо, но в целом его не следует использовать.

Вы также можете выбросить form на экран, используя <cfdump var="#form#">, чтобы посмотреть, что он возвращает. Если вы хотите проверить, что ключ существует для переключателя или флажка, вы можете использовать structKeyExists(form,'myCheckbox'), а не использовать isDefined().

+0

Атрибут name в теге cfquery действительно обеспечивает что-то. Он позволяет запускать код без ошибки. Другими словами, это обязательный атрибут. http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7fae.html –

+5

@ DanBracuk нет, это не требуется для инструкции 'INSERT'. Документы могут сказать, что это так, но это не так. Не требовалось с по крайней мере CF8. –

+0

Еще один урок, извлеченный из участия в форуме. –

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