我通过这个论坛和谷歌搜索找到了解决这个问题的'家庭作业',并且我尝试了各种方法来解决这个问题,但我似乎无法将价值发布到动作文件中......
我理解将数组内爆/连接成一个字符串的概念,以便它可以存储在数据库中,我也理解数据是如何解析的,但我似乎无法完成这个......
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 :(得分: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一样,在转义之前发生爆炸可以解决您的问题。