Я могу отображать состояния флажка из SQL-запроса, но я не могу их обновить. Я использую бит как тип данных. Я уверен, что проблема в том, как я использую cfif для проверки значений флажков. Если я их прокомментирую, любые значения, которые у меня есть в таблице, будут перезаписаны по умолчанию cfparam, и я получаю небольшое подтверждающее сообщение на странице действия. Я пробовал cfif, cfif isDefined и т. Д. Я читал и работал над этим с прошлой недели, просто не могу обернуться вокруг него. Вот пример кода из моего тестового сервера: (FYI Я использую ту же страницу действий для просмотра и обновления записи.)Обновление SQL с флажковыми значениями
<cfif isDefined ("form.update")>
<cfparam name="checkbox1" default=0>
<cfparam name="checkbox2" default=0>
<cfparam name="checkbox3" default=0>
<cfparam name="checkbox4" default=0>
<cfif #form.chkbox1# EQ checked>
<cfset checkbox1=1>
</cfif>
<cfif IsDefined (form.chkbox2)>
<cfset checkbox2=1>
</cfif>
<!--- <cfif IsDefined (form.chkbox3)>
<cfset checkbox3=1>
</cfif>
<cfif IsDefined (form.chkbox4)>
<cfset checkbox4=1>
</cfif> --->
<cfquery name="update" datasource="HHSCIntra">
UPDATE tbl_checkbox
SET chkbox1 = #checkbox1#, chkbox2=#checkbox2#, chkbox3=#checkbox3#, chkbox4=#checkbox4#
WHERE RecID = #user#
</cfquery>
<cfoutput>Record number: #user# Updated.</cfoutput>
<cfelse>
<cfquery name="checkboxview" datasource="HHSCIntra">
SELECT * FROM tbl_checkbox WHERE RecID = #form.nameselect#
</cfquery>
<cfif #checkboxview.chkbox1# EQ 1>
<cfset chkbox1checked="yes">
<cfelse>
<cfset chkbox1checked="no">
</cfif>
<cfif #checkboxview.chkbox2# EQ 1>
<cfset chkbox2checked="yes">
<cfelse>
<cfset chkbox2checked="no">
</cfif>
<cfif #checkboxview.chkbox3# EQ 1>
<cfset chkbox3checked="yes">
<cfelse>
<cfset chkbox3checked="no">
</cfif>
<cfif #checkboxview.chkbox4# EQ 1>
<cfset chkbox4checked="yes">
<cfelse>
<cfset chkbox4checked="no">
</cfif>
<cfform action="checkboxaction.cfm" method="post">
<cfoutput query="checkboxview">#name#</cfoutput>
<cfinput name="user" type="hidden" value="#checkboxview.RecID#"><br>
Checkbox 1: <cfinput type="checkbox" name="chkbox1" checked="#chkbox1checked#" value=1><br>
Checkbox 2: <cfinput type="checkbox" name="chkbox2" checked="#chkbox2checked#" value=1><br>
Checkbox 3: <cfinput type="checkbox" name="chkbox3" checked="#chkbox3checked#" value=1><br>
Checkbox 4: <cfinput type="checkbox" name="chkbox4" checked="#chkbox4checked#" value=1><br>
<br>
<cfinput type="submit" name="update" value="Update">
</cfform>
</cfif>
Mahalo
Флажок должен быть возвращен как «включен» из вашей формы. Независимо от того, какое значение вы установили для отмеченной переменной, не должно быть «включено». Также вырезайте cfinput и cfform и используйте регулярные формы и теги ввода. –
Это потому, что вы используете разные имена для своих операторов 'cfparam' и полей флажков. Таким образом, вы не назначаете значения по умолчанию - вы фактически создаете совершенно новые переменные. Имена должны совпадать. – Leigh
Кроме того, есть много мест, где вы можете очистить/улучшить код. Вы можете отправить его на [codereview] (http://codereview.stackexchange.com/), чтобы получить обратную связь. – Leigh