PHP - Checkbox将值保存到数据库

时间:2017-08-21 05:35:11

标签: php jquery html checkbox

我在表单中有一些checked,如果uncheckedchecked我设置了每个值。 因此,TRUE的复选框的值为FALSE,未选中为TRUE 如果我选中了所有复选框(值为FALSE)并取消选中其中一个复选框,则另一个复选框也会取消选中,数据库上的值也会变为 <label><input type="checkbox" id="trans_val_identical" value="FALSE">II Transaction Value of Identical Goods</label> <label><input type="checkbox" id="trans_val_identical" checked="checked" value="FALSE">II Transaction Value of Identical Goods</label> </div> <div class="checkbox"> <label><input type="checkbox" id="trans_val_similar" value="FALSE">III Transaction Value of Similar Goods</label> <label><input type="checkbox" id="trans_val_similar" checked="checked" value="FALSE">III Transaction Value of Similar Goods</label> </div> <div class="checkbox"> <label><input type="checkbox" id="deductive_val" value="FALSE">IV Deductive Value</label> <label><input type="checkbox" id="deductive_val" checked="checked" value="FALSE">IV Deductive Value</label> </div> <div class="checkbox"> <label><input type="checkbox" id="computed_val" value="FALSE">V Computed Value</label> <label><input type="checkbox" id="computed_val" checked="checked" value="FALSE">V Computed Value</label> </div> <div class="checkbox"> <label><input type="checkbox" id="fallback_val" value="FALSE">VI Fallback Value</label> <label><input type="checkbox" id="fallback_val" checked="checked" value="FALSE">VI Fallback Value</label> 。我无法理解下面的行为是我的代码

HTML

    $('#trans_val_identical').change(function(){
     if($(this).attr('checked')){
          $(this).val('TRUE');
     }else{
          $(this).val('FALSE');
     }
});
$('#trans_val_similar').change(function(){
     if($(this).attr('checked')){
          $(this).val('TRUE');
     }else{
          $(this).val('FALSE');
     }
});
$('#deductive_val').change(function(){
     if($(this).attr('checked')){
          $(this).val('TRUE');
     }else{
          $(this).val('FALSE');
     }
});
$('#computed_val').change(function(){
     if($(this).attr('checked')){
          $(this).val('TRUE');
     }else{
          $(this).val('FALSE');
     }
});
$('#fallback_val').change(function(){
     if($(this).attr('checked')){
          $(this).val('TRUE');
     }else{
          $(this).val('FALSE');
     }
});

JS

{{1}}

1 个答案:

答案 0 :(得分:2)

这里有几个问题:

首先,您的复选框元素没有名称,这意味着它们不会通过其值正确传递到服务器。确保它们具有名称,以便您可以在PHP脚本中引用它们并将它们正确保存到数据库中。

其次,您对表单中如何提交复选框的理解有点偏差。复选框的value属性会在检查后提交,如果未选中则不会提交。因此,您不应将值从TRUE更改为FALSE,反之亦然。

所以,如果你有这样的事情:

<input type="checkbox" name="trans_val_identical" value="1">

然后$_POST['trans_val_identical'](假设您使用帖子提交表单)将是&#34; 1&#34;如果选中该复选框,则如果取消选中该复选框,则该复选框将不存在。因此,要检查是否在PHP中选中了复选框,您可以使用以下内容:

if ( isset( $_POST['trans_val_identical'] )) {
    // The checkbox is checked
} else {
    // The checkbox is not checked
}