Since I began using CFML I’ve struggled with this problem every time I want to add a checkbox to a form that updates a database field.
The problem is that if the checkbox isn’t checked then no evidence of its existence is passed to the form’s action page. This causes a problem when updating a database field because you can’t rely on the FORM structure to provide a value of “no” or “off” that can be updated in your db field.
You therefore need to use something like this before your <cfupdate..>, <cfinsert…> or <cfquery…> tags.:
<cfparam name="FORM.mycheckbox" default="off">
Similarly when populating a form containing a checkbox you need to use a plain <input type=”checkbox”> HTML tag instead of the CFINPUT version. This then allows you to insert <cfif> tag like so…
<input type="checkbox" name="myCheckbox" <cfif #dbQuery.myCheckbox# eq 'on'> checked="yes" </cfif> >
The db field must then be either a string-based data type or an enum type with ‘on’ and ‘off’ as its possible values.