Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
复选框未返回正确的值jquery/php_Php_Jquery_Html_Mysql - Fatal编程技术网

复选框未返回正确的值jquery/php

复选框未返回正确的值jquery/php,php,jquery,html,mysql,Php,Jquery,Html,Mysql,我正在尝试获取复选框的值(true或false),并在while函数中更新一行的数据库。但是,复选框似乎只根据第一行记录值的变化。例如,如果选中了第1行复选框,则value=true。然后,我可以单击下面的行并获取复选框值true。但是,当我单击第一行之外的行以获取false时,它将仅在第一行复选框未选中时注册。我认为这与行id有关,但多年来一直试图修复此问题,但无法修复。请帮忙 HTML/PHP while($row = $result->fetch_assoc()) { echo '

我正在尝试获取复选框的值(true或false),并在while函数中更新一行的数据库。但是,复选框似乎只根据第一行记录值的变化。例如,如果选中了第1行复选框,则value=true。然后,我可以单击下面的行并获取复选框值true。但是,当我单击第一行之外的行以获取false时,它将仅在第一行复选框未选中时注册。我认为这与行id有关,但多年来一直试图修复此问题,但无法修复。请帮忙

HTML/PHP

while($row = $result->fetch_assoc()) {

echo
'
<input type="checkbox" name="home['.$row["id"].']" id="'.$row["id"].'" '.($row["home"]>0 ? 'checked="checked"' : '').'>
            <label for="'. $row["id"].'"></label>
PHP/MYSQL

  if ($home == 'true') {
  $check = date("Ymd");
} else {
  $check = '';
}
if(isset($_POST["home"])) {
  $sql = "UPDATE addresses SET home='$check' WHERE id='$id'";
  if($mysqli->query($sql) === TRUE){
         } else {
      echo "error" . $sql . "<br>".$mysqli->error;
    }
  }
if($home==“true”){
$check=日期(“Ymd”);
}否则{
$check='';
}
如果(isset($_POST[“home”])){
$sql=“更新地址集主页='$check',其中id='$id';
if($mysqli->query($sql)==TRUE){
}否则{
回显“错误”。$sql。“$mysqli->错误;
}
}

//使用
引用正在单击的框:

$(document).ready(function(){
    $('input[type="checkbox"]').on("click", function(){
        var on = $(this).prop("checked");
        $.post("work/updateaddress.php",{home:on,id:this.id});
    });
});

问题在于,您正在选择单击处理程序中的所有复选框,然后访问该集合上的
prop()
,该集合将只返回第一个集合中的值

相反,使用
this
关键字引用引发事件的复选框。出于可访问性的原因,您还应该使用
更改
事件,而不是
单击

$('input[type="checkbox"]').on('change', function(){
  var on = $(this).prop("checked"); // or just this.checked
  $.post("work/updateaddress.php", {
    home: on,
    id: this.id
  });
});

您应该使用
change
事件,而不是
单击
事件作为复选框

$('input[type=“checkbox”]”)。在('change',function()上{
var on=this.checked
console.log(登录)
});

或者,要更改,您可以使用
输入

$('input[type=“checkbox”]”)。在('input',函数(e)上{
让thischeck=e.target.checked
警报(此复选框)
});


第1行
没问题。如果答案有帮助的话,不要忘记接受它——在你之前的一些问题上也是如此。
$('input[type="checkbox"]').on('change', function(){
  var on = $(this).prop("checked"); // or just this.checked
  $.post("work/updateaddress.php", {
    home: on,
    id: this.id
  });
});