我遇到了一些问题,我正在尝试使用复选框存储数据,但我似乎无法将其计算出来。现在我已经创建了一个脚本,可以显示多个具有相同名称的复选框。所以现在我的问题是,如何将数据发送到的页面使它们分开?像:
<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数据库的新行中为每个复选框存储它? 所以它会像:
然后我有一个相关的问题,我该怎么做,以便如果它们已经在数据库中,那么未检查的复选框将被删除。 如果是这样的话:
<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时,它显示该硬件的对抗性。
抱歉我的英语不好。 提前谢谢你答案 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).");");