将复选框条目插入数据库

时间:2011-12-31 03:14:45

标签: php session checkbox

我有名称状态的复选框。这就是我的做法:

   $_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">

3 个答案:

答案 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');