2012-02-15 192 views
0

我想插入多個選中的複選框值插入到一列中,當我搜索它時,我發現用逗號附加值並插入表 例如:在MYSQL數據庫中插入多個複選框值

ID  Value 
------------------- 
    1  Veg 
    2  Non-Veg 
    3  Chinese 
    4  Italian 

如果用戶選擇1 3 4,則附加逗號如1,3,4並插入表中。用逗號附加 不是有效的方法,有沒有其他方法?請幫我 在此先感謝

回答

0

你不應該把多個值一列這將違反數據庫的第一narmal形式:http://en.wikipedia.org/wiki/First_normal_form

只是一列,每布爾型字段喲需要。

+0

這是另一個不錯的主意,是行不通的,如果可能的選項數量可以在未來增加雖然... – 2012-02-15 09:28:00

+0

是的,我有40個複選框現在 – 2012-02-15 09:34:06

0

創建鏈接表,您可以追加多行(1爲每個選區)將是我想的第一件事...

1

如何二進制數 例如:

意思

checkbox 1 : true 
checkbox 2 : false 
checkbox 3 : true 
checkbox 4 : false 

在分貝它將被存儲像圖5(二進制0101十進制值)

唯一的問題是,如果你想搜索用戶例如複選框3選中。

在這種情況下,只需爲每個複選框用戶檢查添加行。搜索複選框時,您將獲得多行復選框ID。我相信這實際上是最好的選擇。

1

假設 表將成爲喜歡ORDER_ID 33 TABLEA

order_id item_id 
33   1 
33   3 
33   4 

你可以得到價值通過內部聯接 上面的表格和項目,值表

(select * from tableA inner join tableB on tableA.item_id=tableB.item_id) 

tableB的

item_id  value 
1   Veg 
2   Non-Veg 
3   Chinese 
4   Italian 

試試這個

$order_id=33; 
$ids=$_GET['ids']; // $ids= 1,3,4 
$ids_Split= explode(",", $ids); 
$cnt=count($ids_Split); 
for($i=0;$i<$cnt;$i++) 
{ 
mysql_query("insert into hotel_table(order_id,item_id) 
values ($id, $ids_Split[$i])"); 
} 
+0

納文,我不認爲用逗號和附加分裂是有效的方法 – 2012-02-15 09:46:43

+0

您不會將表格中的值插入爲「1,3,4」,我們將爲每個值創建一個新條目。 – 2012-02-15 09:53:06

+0

+1用於詳細描述我所建議的;)最佳解決方案imo – 2012-02-15 10:40:12