2012-10-22 142 views
0

我有一個如下的表格,允許用戶選擇不同的項圈類型。每個複選框都有一個項圈ID,在提交表格時會提交。複選框和數據庫更新

collar types

假設用戶選擇第一3個衣領。它看起來像這樣。

collar types

那麼我要做的就是使用INSERT語句添加這三個領我領表。之後,如果用戶想要,他可以取消選中領子類型或添加新項目。

假設用戶未選中第二種類型,如下所示。

collar types

現在,這指的是第二個領型的特定行必須從表中刪除。下面的圖片顯示了表格結構。

enter image description here

現在我的問題是,如果當用戶所做的任何更改提交表單(選中新的複選框或取消選中的話)我如何插入或刪除行?我是否必須爲每個複選框編寫SELECT語句並查看該領域ID是否存在?

幫助我擺脫邏輯,因爲我可以根據給定的邏輯自己構建代碼。

感謝

回答

0

我認爲有2個解決方案:

  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. 可以刪除*的然後插入新值

2

我必須寫SELECT語句的每個複選框,看到領ID是否存在?

數據庫可以告訴你該ID是否存在,這樣做的數據庫。

但是,您需要運行兩個查詢,一個用於刪除,一個用於插入。

+0

是的我知道我必須寫tw o查詢。我想知道的是邏輯。如何根據情況來完成。我怎麼知道用戶是否檢查了任何新的或未檢查的? – Techie

+0

創建要設置的ID列表。用'NOT IN()'在刪除查詢中使用它們。用IN()'在插入查詢中使用它們。任務完成。首先運行刪除查詢,然後插入查詢我會說,但這在技術上是沒有必要的。 – hakre

0

我想如果您可以保存特定用戶的ID或product_id而不是刪除其先前的條目並使用該ID創建該用戶的新行。 或使用ID更新該行。