【问题标题】:PHP - Checkbox saving value to DatabasePHP - 复选框将值保存到数据库
【发布时间】:2017-08-21 13:47:37
【问题描述】:

我在表单中有几个checkbox,如果是checked 或unchecked,我将设置每个值。 所以checked 的复选框的值为TRUE 并且未选中为FALSE 如果我选中了所有复选框(值为TRUE)并且我未选中其中一个,则另一个复选框也未选中,并且数据库上的值也变为FALSE。我无法理解下面的行为是我的代码

HTML

                    <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>

JS

    $('#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');
     }
});

【问题讨论】:

    标签: php jquery html checkbox


    【解决方案1】:

    这里有几个问题:

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

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

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

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

    如果选中复选框,则$_POST['trans_val_identical'](假设您正在使用 post 提交表单)将为“1”,如果未选中复选框,则它将不存在。所以要检查复选框是否在 PHP 中被选中,你会使用这样的东西:

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

    【讨论】:

      猜你喜欢
      • 2017-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-23
      • 2021-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多