简体   繁体   English

PHP生成的SQL复选框-根据选中的内容选择/插入和删除

[英]PHP generated SQL Checkboxes - Select / Insert and Delete based on checked

I am having a little trouble with the below 我在以下方面遇到了一些麻烦

(apologies for it being so messy) (为它太乱了而道歉)

I am creating a PHP generated set of check boxes, which i'm passing the variants over to the update_records.php page (below) as values "val1-val2" then splitting them out and trying to check the database if they exist, and if not add the record. 我正在创建一个PHP生成的复选框集,我将这些变体作为值“ val1-val2”传递到update_records.php页面(如下),然后将其拆分出来并尝试检查数据库是否存在,以及如果没有,则添加记录。 All works great, minus the part i can't get my head round - how to delete records when a user unticks a checkbox and then submits.. Anyone able to help? 一切都很好,减去了我无法理解的部分-当用户取消选中复选框然后提交时,如何删除记录。有谁能提供帮助?

if(isset($_POST['variants']) && !empty($_POST['variants'])) {

    $arr_variants = $_POST['variants'];
   foreach($arr_variants as $variant) {

    $storevariants = explode('-', $variant); 

    $baseid = $storevariants[0]; 
    $colourid = $storevariants[1];

  $sql_finalcheck = "SELECT * FROM finalproducts WHERE asset_id = $post_asset_id AND colour_id = $colourid AND base_id = $baseid";

  $result = $conn->query($sql_finalcheck);
  if ($result->num_rows > 0) {
echo "record already exists"; // just to show a message to show how its handling the data.
    }

     else {
$sql_add_vars = "INSERT INTO finalproducts (asset_id, colour_id, base_id) VALUES ('$post_asset_id', '$colourid', '$baseid')";
if ($conn->query($sql_add_vars) === TRUE) {

     }    }    }         }

Turn all the checked boxes into a list that you can check with NOT IN : 将所有选中的框变成可以使用NOT IN进行检查的列表:

if(isset($_POST['variants']) && !empty($_POST['variants'])) {

    $arr_variants = $_POST['variants'];
    $arr_notin = array();
    foreach($arr_variants as $variant) {

        $storevariants = explode('-', $variant); 

        $baseid = intval($storevariants[0]); 
        $colourid = intval($storevariants[1]);
        $arr_notin[] = "($baseid, $colourid)";

        $sql_finalcheck = "SELECT * FROM finalproducts WHERE asset_id = $post_asset_id AND colour_id = $colourid AND base_id = $baseid";

        $result = $conn->query($sql_finalcheck);
        if ($result->num_rows > 0) {
            echo "record already exists"; // just to show a message to show how its handling the data.
        }

        else {
            $sql_add_vars = "INSERT INTO finalproducts (asset_id, colour_id, base_id) VALUES ('$post_asset_id', '$colourid', '$baseid')";
            if ($conn->query($sql_add_vars) === TRUE) {
            }
        }
    }
    $str_notin = implode(", ", $arr_notin);
    $sql_delete = "DELETE FROM finalproducts WHERE asset_id = $post_asset_id AND (baseid, colourid) NOT IN ($str_notin)";
    $conn->query($sql_delete));
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM