当复选框被选中时,插入数据,如果复选框未被选中,则删除数据。

问题描述 投票:0回答:1

我需要帮助。

我想创建一个系统,当复选框被选中时,将数据插入数据库,当它被取消选中时,它将从数据库中删除。也许有其他的解决方案

超文本标记语言

<div class="row">
    <div class="col-lg-9"><label for="vehicle1">Perm 1</label></div> 
    <div class="col-lg-3"><label class="switch"><input value="1" name="permchecked[]" type="checkbox"><span class="slider"></span></label></div>
</div>
<div class="row">
    <div class="col-lg-9"><label for="vehicle1">Usuwanie/Perm 2</label></div>  
    <div class="col-lg-3"><label class="switch"><input value="2" name="permchecked[]" type="checkbox"><span class="slider"></span></label></div>
</div>
<div class="row">
    <div class="col-lg-9"><label for="vehicle1">Perm 3</label></div>     
    <div class="col-lg-3"><label class="switch"><input value="3" name="permchecked[]" type="checkbox"><span class="slider"></span></label></div>
</div>

PHP

if(isset($_POST['u_permissions_update'])){
   if (isset($permcheckeds)){ 
        foreach ($permcheckeds as $permchecked) {
            $query = $db2->prepare("INSERT INTO permissions_users SET user_id = :u_permissions_update, permissions_id= :permchecked"); 
            $query->bindValue(':u_permissions_update', $u_permissions_update);
            $query->bindValue(':permchecked', $permchecked);                     
            $query->execute();     
            $_SESSION['success']  = "Work";   
        }          
    } else {
        $_SESSION['success']  = "Not Working";   
    }  
}   

DB permissions_users

permissions_users_id | permissions_id | user_id 

visualisation

php mysql sql mysqli pdo
1个回答
0
投票

因为我不确定你使用的是什么javascript框架,如果有的话,这里有一个你可以做的蓝图。

如果你打算在切换时向服务器发送数据,你选中复选框的onchange,你不需要它是一个数组。并提交你想要发生的过程以及要改变的权限值。

var _checks = document.querySelectorAll("input[name=permchecked]");

_checks.forEach(function(el){
  el.addEventListener("change",function(){
    var field_data = {
      "process" : (this.checked) ? "add" : "delete",
      "permission": this.value
    };

    //using ajax, submit field_data to the server

  });
});

PHP

在你的PHP中,然后检查进程。

if(isset($_POST['process'])){
  if($_POST['process'] == "delete"){
  //delete from database where that permission equals the value passed plus that user. Even if the permission doesn't exist in the database already, still just run the single delete query. No reason to add an additional query to check that it exists.
 }
elseif($_POST['process'] == "add"){
  //add that permission to the database
 }
}
© www.soinside.com 2019 - 2024. All rights reserved.