PHP在数据库中存储多个复选框

时间:2011-09-06 04:34:01

标签: php sql

我通过这个论坛和谷歌搜索找到了解决这个问题的'家庭作业',并且我尝试了各种方法来解决这个问题,但我似乎无法将价值发布到动作文件中......

我理解将数组内爆/连接成一个字符串的概念,以便它可以存储在数据库中,我也理解数据是如何解析的,但我似乎无法完成这个......

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)的位置..我真的不知道如何解决这个问题..

非常感谢,谢谢你们。上帝保佑!

2 个答案:

答案 0 :(得分:0)

您可以查看按位运算符。所以在其他五个第一个复选框中,值为1,然后是第二个值2和第三个值4.所以以位为单位进行计数。因此,在提交表单时,通过添加已选中复选框的所有值,将所有值添加到一起。然后将ome值存储在db中。

要检查是否勾选了复选框,请执行以下操作

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

答案 1 :(得分:0)

可能引用mysql_prep()函数的来源:http://forums.devnetwork.net/viewtopic.php?f=1&t=81234。请注意,它最终会将数组传递给mysql_real_escape_string(),这无疑会将数组转换为字符串"Array",然后将其存储在数据库中。正如上面评论中发布的miki一样,在转义之前发生爆炸可以解决您的问题。