使用复选框值更新SQL

时间:2015-03-11 00:09:17

标签: sql checkbox coldfusion

我可以从SQL查询中显示复选框状态,但我无法更新它们。我使用bit作为数据类型。我非常确定问题在于我使用cfif来测试复选框的值。如果我将它们注释掉,表中的任何值都会被cfparam默认值覆盖,并且我会在操作页面上收到我的小确认消息。我已经尝试过cfif,cfif isDefined等。自上周以来,我一直在阅读和研究这个问题,但似乎无法解决这个问题。这是来自我的测试服务器的示例代码:(我可以使用相同的操作页面来查看和更新​​记录。)

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

马洛

1 个答案:

答案 0 :(得分:2)

我的偏好是使用cfparam,如:

<cfparam name="form.chkbox1" default="0" overwrite="false" />

然后在cfquery中使用变量的值:

SET chkbox1 = <cfqueryparam value="#form.chkbox1#" cfsqltype="CF_SQL_BIT" />

如果选中,您的视图将值设置为1。如果没有检查,则不会在表单范围内传递。