我有这样生成的动态复选框
<cfset counter = 0>
<form name="setPermissions" class="setPermissions" action="" method="post">
<cfoutput>
<cfloop query="getUserAccess">
<input name="Meetings_#Counter#" type="checkbox" />
<cfset counter = counter + 1>
</cfloop>
</cfoutput>
</form>
getUserAccess
查询有 6 行,这意味着将输出其中的 6 个复选框。
要分别阅读这些并更新表,我正在运行以下查询
<cfloop from="0" to="#getUserAccess.RecordCount#" index="i">
<cfquery datasource="#Request.dsn#">
UPDATE table SET
<cfif structKeyExists(FORM, 'Meetings_#i#')>
Meetings = <cfif FORM['Meetings_#i#'] EQ "on">1,<cfelse>0,</cfif>
</cfif>
WHERE ID = '#an_ID_that_is_specified#'
</cfquery>
</cfloop>
抱歉,如果这段代码不正确,当我在我的页面上运行它时它可以工作,但是生成了大约 20 个这样的复选框,所以我剪掉了我的代码,所以你只能看到一个。
现在,这段代码工作得很好,当我选中一个框并提交表单时,这段代码将更新数据库以将值设置为 1。
唯一的问题是,当我取消选中该框时,它不会将值更改为 0。这就是我卡住的地方。当没有on
指定为表单值时,为什么不将值更改为 0?
我已经做了一个<cfdump>
看看是否还有任何东西通过,但没有。
勾选所有框后,我得到了这个转储
MEETINGS_0 on
MEETINGS_1 on
MEETINGS_2 on
MEETINGS_3 on
MEETINGS_4 on
MEETINGS_5 on
有一些打勾,我没有打勾的没有出现。
但是,该值仍未从 1 更新为 0。