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

时间:2012-12-09 14:17:42

标签: php mysql checkbox

我遇到了一些问题,我正在尝试使用复选框存储数据,但我似乎无法将其计算出来。现在我已经创建了一个脚本,可以显示多个具有相同名称的复选框。所以现在我的问题是,如何将数据发送到的页面使它们分开?像:

<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. 数据1
  2. 数据2
  3. 数据3
  4. 然后我有一个相关的问题,我该怎么做,以便如果它们已经在数据库中,那么未检查的复选框将被删除。 如果是这样的话:

    <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的表,还有一个带有硬件的表。 然后我有链接的表,所以如果我选择需要在机器中的硬件,它将在链接表中创建一行,以便当我显示该PC时,它显示该硬件的对抗性。

    抱歉我的英语不好。 提前谢谢你

1 个答案:

答案 0 :(得分:0)

$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).");");