そのように生成される動的チェックボックスがあります
  <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つしか表示されないようにしました。
これで、このコードはうまく機能します。チェックボックスをオンにしてフォームを送信すると、このコードはデータベースを更新して値を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に更新されていません。