in reply to checkbox
Without seeing your code I can only guess its that checkbox values are only passed to the cgi script when checked. If they are unchecked then they do not get passed at all. Unless your script checks that the checkbox value has not been passed and is hence false your program may decide not to update the value. As an alternative you may consider changing to using radio buttons. You can then have two radio buttons, one for true and one for false.
The alternative is to use some form of Javascript manipulation to determine the value of some hidden field (one for each checkbox). Though this is more complicated than it sounds and isn't really scalable.
Hope that helps