我有名称状态的复选框。这就是我的做法:
$_SESSION['statuses'] = mysql_real_escape_string($_POST['statuses']);
当我插入它时,我就是这样做的:
$insert = "INSERT INTO submitted (statuses)
VALUES ('".$_SESSION['statuses']."')";
$query = mysql_query($insert) or die ("Error: ".mysql_error());
问题是没有检查任何内容被插入到数据库中,所以如何插入已检查的条目?
NEW / UPDATE:
这是复选框表格的样子:
<input type="checkbox" name="statuses" value="something">
<input type="checkbox" name="statuses" value="something">
<input type="checkbox" name="statuses" value="something">
<input type="checkbox" name="statuses" value="something">
<input type="checkbox" name="statuses" value="something">
<input type="checkbox" name="statuses" value="something">
答案 0 :(得分:5)
也许问题可能在于您为表单撰写的标记。以下是示例:
<form action="checkbox-form.php" method="post">
Select your options<br />
<input type="checkbox" name="options[]" value="A" />A<br />
<input type="checkbox" name="options[]" value="B" />B<br />
<input type="checkbox" name="options[]" value="C" />C<br />
<input type="submit" name="formSubmit" value="Submit" />
</form>
请注意,options
设置为options[]
。这允许所有选中选项的数组出现在POST超级变量中。
如果你这样做:
var_dump($_POST['options']);
然后,您应该获得一个包含所有已检查值的数组。
然后你可以做类似的事情:
foreach($_POST['options'] as &$option){
mysql_real_escape_string($option);
}
然后插入数据库:
$insert = "INSERT INTO submitted (statuses)
VALUES ('". implode(",", $_POST['options']) ."')";
$query = mysql_query($insert) or die ("Error: ".mysql_error());
更新: 在表单的每个页面上,您应该有一些类似于转义值并将其保存到会话中的内容。然后,这会将每个页面的值保存到用户的会话中:
//Page 1
foreach($_POST['options'] as $option){
$_SESSION['options'][] = mysql_real_escape_string($option);
}
//page 2
$_SESSION['SOME_OTHER_VALUE_FROM_TEXT_BOX'] = mysql_real_escape_string($_POST['SOME_OTHER_VALUE_FROM_TEXT_BOX');
//Final page:
//Everything is now stored in SESSION, so you can use them there:
//For example, display the value of options:
var_dump($_SESSION['options']); //etc
//So here, you would just run your sql queries to insert the appropriate data into your databse.
答案 1 :(得分:1)
这是我在插入数据库时用于复选框的内容。
function validateCheckBox($name) {
if (isset($_POST[$name]) && !empty($_POST[$name]) && $_POST[$name] === 'on') {
return 1;
}else{
return 0;
}
}
答案 2 :(得分:-1)
不知道你是不是只打了这个,或者你不知道它在那里
$_SESSION['SOME_OTHER_VALUE_FROM_TEXT_BOX'] = mysql_real_escape_string($_PSOT['SOME_OTHER_VALUE_FROM_TEXT_BOX');
应该是
$_SESSION['SOME_OTHER_VALUE_FROM_TEXT_BOX'] = mysql_real_escape_string($_POST['SOME_OTHER_VALUE_FROM_TEXT_BOX');