【问题标题】:When checkbox is checked insert data if checkbox is unchecked remove data选中复选框时,如果未选中复选框,则插入数据删除数据
【发布时间】:2020-05-01 06:16:17
【问题描述】:

我需要帮助。

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

HTML

<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";   
    }  
}   

数据库权限用户

permissions_users_id | permissions_id | user_id 

【问题讨论】:

  • 问题开始于未选中的框不在数组中,因此您首先必须删除所有权限才能在后面插入它们,或者您可以有一个状态字段来保存复选框的状态,因此您可以使用 INSERT ON DUPLICATE 插入新权限或将状态更改为 1 ,当然在这里您也可以事先将所有状态设置为 0

标签: php html


【解决方案1】:

由于我不确定您使用的是什么 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
 }
}

【讨论】:

  • 谢谢兄弟!我对javascript / ajax知之甚少,但在阅读了一些基本信息并分析了stackoverflow上的类似问题后,我能够创建这个脚本!
猜你喜欢
  • 2021-06-15
  • 2016-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-03
  • 2019-05-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多