【问题标题】:How do I update database with checkbox value?如何使用复选框值更新数据库?
【发布时间】:2018-10-26 04:48:55
【问题描述】:

我正在尝试根据复选框输入更新列值。单击触发了代码(我使用 alert() 进行了测试),但数据库中没有发生更新,控制台中也没有显示错误。请注意,我正在使用图像来替换复选框。

CSS

input[type=checkbox] {
  display: none;
}


label:before {
  content: url("../images/house.png");
    z-index: 100;
}

:checked + label:before {
   content: url("../images/home.png");
}

PHP/HTML

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {

echo 
'
<div class="mx-auto" style="max-width:500px;">
    <div class="form-group">
        <div class="form-inline">
            <div class="form-group col-1">
                <input type="checkbox" name="home['. $row["id"].']" id="'. $row["id"].'" ' . ($row["home"]==1 ? ' checked="checked"' : '') . '>
            <label for="'. $row["id"].'"></label>
            </div>
            <div class="col-10" style="font-weight:bold;">
                '.$row["address"].' '. $row["suburb"].'
            </div>
            <div class="col-1">
                <a style="float:right; margin-bottom:5px;" href="'.$row["gmap"].'" class="btn btn-success">Go</a>
            </div>
        </div>

AJAX

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

PHP

$id = $mysqli->real_escape_string($_POST['id']);
$home = $mysqli->escape_string($_POST['home']);

if(isset ($_POST["home"])) {
  $sql = "UPDATE addresses SET home='$home' WHERE id='$id'";
  if($mysqli->query($sql) === TRUE){
         } else {
      echo "error" . $sql . "<br>".$mysqli->error;
    }
  }

【问题讨论】:

标签: php mysql ajax


【解决方案1】:

您需要以这种方式访问​​ POST 变量

$_POST['home'][$_POST['id']]

因为你已经定义了类似的名字

<input type="checkbox" name="home[id]">

我还建议您像这样检查 id 和复选框状态:

$id   = intval($_POST['id']);
$home = ($_POST['home'][$_POST['id']] == 'true' ? 1 : 0);

【讨论】:

    猜你喜欢
    • 2020-03-22
    • 2018-07-27
    • 1970-01-01
    • 2014-10-20
    • 2014-11-27
    • 2016-11-30
    • 2017-06-06
    • 1970-01-01
    • 2018-09-03
    相关资源
    最近更新 更多