2011-09-14 29 views
1

我有在我的周圍形成20複選框結合複選框值使用PHP的MySQL

<input type="checkbox" name="c1" value="1" /> 
<input type="checkbox" name="c2" value="2" /> 
<input type="checkbox" name="c3" value="3" /> 
<input type="checkbox" name="c4" value="4" /> 

我想這些值的數據庫。我只是認爲,而不是在我的數據庫中創建20個字段抓取數據庫中的所有值作爲1,2,3,4,然後在查詢時爆炸的值,並相應地使用PHP顯示它。

有人可以請告訴我如何提交時,我應該如何從檢查字段連接值1,2,3,4,所以我可以傳遞到數據庫。

我將不勝感激,如果任何人都可以建議一個不同的有效的方式來實現這個使用PHP。

+1

爲什麼不爲類型問題創建一個表,比如'type_id | type_name'。然後答案表將會有一些'answer_id | type_id | answer'? – Shef

+0

這是一個sql反模式,@Shef指出瞭解決這個問題的正確方法...讓我看看我是否可以找到參考教程... – Eineki

+0

@Shef我其實不知道該怎麼做,參考將是非常有用.. – LiveEn

回答

5

您可以更改複選框的名稱是一樣的,像

<input type="checkbox" name="cb[]" value="1" /> 
<input type="checkbox" name="cb[]" value="2" /> 

然後通過

if (isset($_POST['cb'])) { 
    $my_values = implode(",", $_POST['cb']); 
} 

通過$_GET$_POST訪問它們。如果你希望他們排序,那麼你將想做這樣的事情:

​​

爲了記錄,我同意@Shef在數據庫可以處理額外負載的情況下。然而,取決於在高度可擴展的解決方案中何時需要這些信息,這是處理這種情況的完全可接受的方式。

+0

什麼是額外的負載?記錄容易維護,像這樣的數據可以像記憶中的巨型磁懸浮列車一樣坐下來,隨時準備讓你嗅出它。我不認爲一列中的所有記錄都不會縮放。 – Shef

+0

@ sberry2A謝謝...完美的作品.. – LiveEn

1

要回答你最初的問題,首先你需要命名您的複選框都是一樣的名字,所以:

<input type="checkbox" name="box[]" value="1" /> 
.... 
<input type="checkbox" name="box[]" value="20" /> 

PHP腳本:

$boxes = $_POST['box']; 
$values = implode(",", $boxes); // $values now has "1,2,3,4...", insert into table 

一個更好的辦法是有一個單獨的表(見@Shef的評論)。