Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.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
Php 在mysql中使用复选框存储和删除数据_Php_Mysql_Checkbox - Fatal编程技术网

Php 在mysql中使用复选框存储和删除数据

Php 在mysql中使用复选框存储和删除数据,php,mysql,checkbox,Php,Mysql,Checkbox,我有一点问题,我试图用复选框存储数据,但我似乎无法解决。现在我已经制作了一个脚本,可以显示多个复选框,所有复选框都具有相同的名称。所以我现在的问题是,如何使发送数据的页面分离?比如: <input type='checkbox' checked name='cpu-link[]' value='1' /> <input type='checkbox' checked name='cpu-link[]' value='2' /> <input type='checkb

我有一点问题,我试图用复选框存储数据,但我似乎无法解决。现在我已经制作了一个脚本,可以显示多个复选框,所有复选框都具有相同的名称。所以我现在的问题是,如何使发送数据的页面分离?比如:

<input type='checkbox' checked name='cpu-link[]' value='1' />
<input type='checkbox' checked name='cpu-link[]' value='2' />
<input type='checkbox' checked name='cpu-link[]' value='3' />

如何将其存储在mysql数据库的新行中的每个复选框中? 因此,这就像:

  • 数据1
  • 数据2
  • 数据3
  • 然后我有一个相关的问题,我如何使未选中的复选框被删除,如果它们已经在数据库中。 如果是这样的话:

    <input type='checkbox' checked name='cpu-link[]' value='1' />
    <input type='checkbox' name='cpu-link[]' value='2' />
    <input type='checkbox' name='cpu-link[]' value='3' />
    
    
    
    然后,id为2和3的行将被删除,但id为1的行将被创建,或者如果它已经在数据库中,则只保留该行

    这是两个表之间的一种链接。 我有一张带电脑的桌子,还有一张带硬件的桌子。 然后我有一个带有链接的表,所以如果我选择一个需要在机器中运行的硬件,它会在链接表中创建一行,这样当我显示pc时,它会显示硬件的可能性

    对不起,我的英语不好。
    提前感谢

    在数据库中哪里可以找到需要删除的数据?我只能看到您使用$previous\u checked创建了en数组,看不到您在哪里提供$previous\u checked需要删除的ID?我不提供ID给
    $previous\u checked
    。我这样做是为了
    $被删除
    它不工作,cpu链接不接收任何数据。我尝试在向$cpu\U链接发送数据后回显它,但它什么也不回显。最后一个mysql_查询中出现错误。“)”在第1行,您实际上将复选框命名错误。它必须是
    name=“cpu link[]”
    它现在发布,但是现在
    $cpu link
    正在
    上发布
    而不是值?
    
    $all_cpu_links = array(); // here is your array with all possible values of cpu-link
    $previously_checked = array(); // array of values that are already in your database
    $to_be_removed = array();
    $to_be_inserted = array();
    
    // It is better to use here here a prepared statement by the way
    foreach ($_POST['cpu-link'] as $cpu_link)
    {
        if (!in_array($cpu_link, $previously_checked))
        {
            // validate $cpu_link here
            mysql_query("INSERT INTO table (`cpu_link`) VALUES (".$cpu_link.");");
        }
    
    }
    
    foreach ($all_cpu_links as $cpu_link)
    {
        if (!in_array($cpu_link, $_POST['cpu-link']) && in_array($cpu_link, $previously_checked))
            $to_be_removed[] = $cpu_link;
    }
    
    mysql_query("DELETE FROM table WHERE `cpu_links` IN (".implode(' ,', $to_be_removed).");");