CheckBox&数据库更新

时间:2012-10-22 06:13:46

标签: php html mysql database

我有一个下面的表格,允许用户选择不同的领子类型。每个复选框都有一个领子ID,将在提交表单时提交。

collar types

假设用户选择了前三个项圈。它看起来像这样。

collar types

然后我做的是使用insert语句将这三个项圈添加到我的项圈表中。之后如果用户想要,他可以取消选中项圈类型或添加新的。

假设用户取消选中第二种类型,如下所示。

collar types

现在必须从表中删除引用第二个项圈类型的特定行。下图显示了表格结构。

enter image description here

现在我的问题是当提交表单时,如果用户进行了任何更改(选中了新复选框或未选中任何更改)我如何插入或删除行?我是否必须为每个复选框编写SELECT语句,并查看该项ID是否存在?

帮助我解决逻辑,因为我能够根据给定的逻辑自己构建代码。

由于

3 个答案:

答案 0 :(得分:2)

  

我是否必须为每个复选框编写SELECT语句,看看是否存在该衣领ID?

数据库可以告诉您该ID是否存在,以便数据库。

但是,您需要运行两个查询,一个用于删除,一个用于插入。

答案 1 :(得分:0)

我想如果您可以为特定用户保存id或product_id,而不是删除其早期条目,并使用该ID创建该用户的新行。 或者使用id更新该行。

答案 2 :(得分:0)

我认为有两种解决方案:

  1. 您必须从表中选择所有ID并验证是否选中了复选框:

    $array = array();
    $sql = mysql_query("SELECT collor_id FROM my_table WHERE product_id='x'");
    while($row = mysql_fetch_array($sql)) {
        array_push($array, $row['collor_id']);
    }
    
    if(count($_POST['my_collors']) > 0) {
        foreach($_POST['my_collors'] as $value) {
            if(!in_array($value, $array)) {
                 // insert it into db
                 // unset the array value for this collor id
            } else {
             // unset the array value for this collor id
            }
        }
    }
    
    // foreach remained array value delete them from the db
    
  2. 您可以从表中删除所选产品的条目,然后插入新值

相关问题