2011-09-06 41 views
1

我通過這個論壇搜索這個問題的解決方案並用Google搜索做了「家庭作業」,並且我嘗試了各種方法解決這個問題,但我似乎無法獲得價值被張貼到動作文件中...PHP在數據庫中存儲多個複選框

我理解implode的概念/將數組連接成一個字符串,以便它可以存儲在數據庫中,我也理解數據如何被解析,但我無法完成這件事..

PHP形式:

<form name="questionnaire_1" action="test_index.php?action=send_questionnaire" method="post"> 
<table> 
<tr class="row-a"> 
<td> 
2. Position<br /> 
<i>(You may choose more than one option for this question)</i> 
</td> 
<td colspan="6"> 
<label> <input type="checkbox" name="position[]" value="1" /> Project Leader (External) </label><br /> 
<label><input type="checkbox" name="position[]" value="2" /> Project Leader (Internal) 
</label><br /> 
<label><input type="checkbox" name="position[]" value="3" />Project Member (External) 
</label> <br /> 
<label><input type="checkbox" name="position[]" value="4" /> Project Member (Internal) 
</label><br /> 
<label> <input type="checkbox" name="position[]" value="5" />Others (Please Specify)</label> 

<input name="position_specify" type="text" size="40" maxlength="40" /> 
</td> 
</tr> 
</table> 

PHP操作:

if (isset($_POST['Submit'])) 
{  
$position = mysql_prep($_POST['position']); 
$allPosition = implode (",", $position); 
} 
etc ... 

的position_specify輸入有沒有問題......只有具有與該複選框問題...數據庫發生在VARCHAR(255)的位置..我真的不知道如何解決這個..

很多幫助表示讚賞,謝謝&上帝保佑!

+0

複選框列表是否已修復? – zerkms

+0

對不起,我不明白你的意思......你的意思是價值是固定的? – Bright

+0

什麼是'mysql_prep()'?是否記錄在數組上遞歸地工作?另外,你爲什麼不把它建模成數據庫中的一對多關係? – cdhowie

回答

0

您可能會看看位運算符。所以換句話說,五個第一個複選框的值爲1,然後是第二個值2和第三個值4.所以按位計數。因此,在提交表單時,通過添加所選複選框的所有值來將所有值一起添加。然後在數據庫中存儲ome值。

要檢查是否複選框被選中做以下

If($box & 1){ echo 'checkbox 1 is checked';} 
0

可能參考mysql_prep()功能來源:http://forums.devnetwork.net/viewtopic.php?f=1&t=81234。請注意,它最終將數組傳遞給mysql_real_escape_string(),這無疑將數組轉換爲字符串"Array",然後將其存儲在數據庫中。由於miki發表在上面的評論,轉義之前內爆應解決您的問題。

相關問題