0

我有一点问题,我正在尝试使用复选框存储数据,但我似乎无法弄清楚。现在我制作了一个脚本,可以显示多个具有相同名称的复选框。所以我现在的问题是,我如何制作发送数据的页面以使它们分开?像:

<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

然后我有一个相关的问题,如果它们已经在数据库中,我该怎么做才能删除未选中的复选框。所以如果是这样:

<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 的行将被创建,或者如果它已经在数据库中,则保留。

这都是 2 个表之间的一种链接。我有一个带有 pc 的表和一个带有硬件的表。然后我有一个带有链接的表,所以如果我选择一个需要在机器中运行的硬件,它将在链接表中创建一行,以便当我显示 pc 时,它显示了硬件 oppotionity。

对不起,我的英语不好。先感谢您

4

1 回答 1

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).");");
于 2012-12-09T14:30:52.480 回答