我正在标记电影并将其存储到数据库中。 tag_id可以是汽车,火车,船只,细节可以是颜色或特定类型。
DB
movie_id | tag_id | tag_detailsid
2612 | 75 | 1
2612 | 10 | 3
2612 | 12 | 2
标签通过带有复选框的表单提交(所有选中的复选框都添加到数据库中)
现在.. 如何跟踪我取消选中的复选框。稍后阶段 所以看看上面的例子..对于movie_id 2612,我取消选中ID为2的标签12作为详细信息。
因此$ _POST仅保留75-1和10-3 ......应从dB中删除12-2。
所以我想..我只是通过while循环遍历dB并将db值与我从复选框中获得的值(通过$ _Post方法)进行比较。 我计算$ _Post中的值,它显示2(复选框已选中)。 然而,数据库为该特定电影保存了3个条目($ numberofrecords)。
我的剧本到目前为止......
$sql_query = "Select tag_id, tag_details_id FROM movie_tags WHERE movie_id = '2612";
$report = MYSQL_QUERY($sql_query);
$numberofrecords = mysql_num_rows ($report);
while ($report_row = mysql_fetch_array($report))
{
$thistag_id = $report_row['tag_id'];
$tag_details_id = $report_row['tag_details_id'];
foreach($_POST as $checkbox_id => $value)
{
if ($thistag_id == $checkbox_id) // check if DB tag equals checkbox value
{
echo "checkbox value is checked equals value in DB";
}
}
}
如何跟踪我需要从数据库中删除的记录?
答案 0 :(得分:0)
一个简单的解决方案是根据您的主键删除每一行,例如movie_id
,并为每个选中的复选框插入循环。那就是:
答案 1 :(得分:0)
有时最简单的解决方案就是前进。
除非您有令人信服的理由,否则您可以在保存之前删除所有标记记录,然后仅插入已检查的标记:
使用OP选择的数据库驱动程序
的示例代码$sql = 'DELETE FROM movie_tags WHERE movie_id=2612';
mysql_query($sql);
foreach($_POST as $checkbox_id => $value) {
// save your records here
// To show you the code I'd need to see the HTML for the checkboxes.
}
注意:你应该不使用mysql _ 。请改用PDO / mysqli:Why shouldn't I use mysql_* functions in PHP?