复选框输入和数据库搜索

时间:2016-01-03 14:54:53

标签: php

我正在标记电影并将其存储到数据库中。 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";
    }
}
 } 

如何跟踪我需要从数据库中删除的记录?

2 个答案:

答案 0 :(得分:0)

一个简单的解决方案是根据您的主键删除每一行,例如movie_id,并为每个选中的复选框插入循环。那就是:

  1. 根据movie_id
  2. 删除行
  3. 循环POST数据并插入

答案 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?