如果未选中,则将复选框值设为零

时间:2018-05-25 15:41:57

标签: php jquery

我有3个复选框,我将这些复选框的值存储到数据库中。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<ul>
  <li><input type="checkbox" value="1" name="estate-checkbox[]"></li>
  <li><input type="checkbox" value="2" name="estate-checkbox[]"></li>
  <li><input type="checkbox" value="3" name="estate-checkbox[]"></li>
</ul>

服务器端:

if(isset($_POST['estate-checkbox'])){
    $safeestatecheckbox = implode(",",$_POST["estate-checkbox"]);
} else {
    $safeestatecheckbox = '';
}

如果用户选中所有复选框,它将存储在db中,如下所示:

1, 2, 3

如果选择一个,或只选择两个,它会像这样存储:

1, 3

我想如果用户没有选中复选框,它会将数据库存储为零,就像这样

1, 0, 3

所以问题是,如果在$_POST['estate-checkbox']中没有选中复选框值,我如何才能将复选框值设为0?

3 个答案:

答案 0 :(得分:1)

只有选中的复选框才会发送到服务器,无法让它为未选中的复选框发送另一个值。

您可以在PHP中填写缺少的值:

$estates = [];
$estate_checkboxes = array_flip($_POST['estate-checkbox']);
for ($i = 1; $i <= $max_estates; $i++) {
    if (isset($estate_checkboxes[$i])) {
        $estates[] = $i;
    } else {
        $estates[] = 0;
    }
}

$safeestatecheckbox = implode(', ', $estates);

答案 1 :(得分:1)

一个选项是拥有一个hidden字段,用于更新复选框的每次点击

$('[name="estate-checkbox[]"]').click(function() {
  var arr = [];
  $('[name="estate-checkbox[]"]').each(function() {
    if ($(this).prop('checked')) arr.push($(this).val());
    else arr.push(0);
  })

  $('[name="estate-checkbox-values"]').val(arr);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li><input type="checkbox" value="1" name="estate-checkbox[]"></li>
  <li><input type="checkbox" value="2" name="estate-checkbox[]"></li>
  <li><input type="checkbox" value="3" name="estate-checkbox[]"></li>
</ul>

<!----- Change into type hidden ----->
<input type="text" name="estate-checkbox-values"> 

在你的PHP上:

if(isset($_POST['estate-checkbox-values'])){
    $safeestatecheckbox = $_POST['estate-checkbox-values'];
} else {
    $safeestatecheckbox = '';
}

答案 2 :(得分:0)

function printOut(){

var theText = document.getElementById("theText").innerHTML;
document.getElementById("theText").innerHTML= 
document.getElementById("theChar").value;

var theNumber = document.getElementById("theNbr").innerHTML;
document.getElementById("theNumber").innerHTML= 
document.getElementById("theNbr").value;



var newText= theText;
var outPut; 

for(i = 0; i<theNumber; i++){
newText =newText + theText; 
}

newText = newText + "<br>";

for( i = 0; i< theNumber; i++){
outPut = outPut + newText;
}

document.getElementById("theText").innerHTML= outPut;
}