我无法获得复选框值

时间:2011-12-05 17:23:10

标签: php html arrays post checkbox

我得到了这个,我不知道我在这里缺少什么:

<?php
    //Some validation for the SUBMIT form
    if(isset($_POST['submit'])&&$_POST['submit']=='add'){
        $_POST = array_map("mysql_real_escape_string", $_POST); //This little fella is responsible for the mess ¬¬
        $campus_string = $_POST['campus']; //To get a checkboxes Array
        ....
        print_r($campus_string); //to see if I am getting the checkboxes when submitting
    }
?>

....

//Now inside <body> of the HTML
<form action="" method="post" name="filosofal">
    //A little loop to create the checkboxes from a DB
    foreach($campi as $keyCampi => $valueCampi){
        echo '<tr>
                  <td>
                  <input type="checkbox" id="campus[]" name="campus[]" value="'.$value['Id'].','.$valueCampi['Id'].'" />'.$valueCampi['Nombre'].'<br />
                  </td>
              </tr>';
    }
</form>

print_r没有显示任何内容,在通过POST提交时未存储数组。希望你能帮助我找出我搞砸的地方。

编辑:解决了

好吧,我终于明白了,这有点令人尴尬。

在我的代码中,我使用:

$_POST = array_map("mysql_real_escape_string", $_POST);

避免一些编码冲突(比如名字带有's),安全等等。

我评论了这条线,它现在有效(没有添加那部分,因为我不知道它在这个问题上的相关性),不需要做任何改动。

不知道为什么我花了五天时间才找到那个小东西,但现在已经完成了。无论如何,谢谢大家。

3 个答案:

答案 0 :(得分:0)

尝试添加

<input type="hidden" name="submit" value="add" />

在你的表单中,if语句将返回false ...

答案 1 :(得分:0)

尝试转储帖子数据:

echo "<pre>";
print_r($_POST);
//if you check the radio then it will be listed in your $_POST dump
//add action to your form

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<?php
foreach($campi as $keyCampi => $valueCampi){ 
?>
<tr>
    <td>
    <input type="checkbox" id="campus[]" name="campus[]" value="<?php echo $valueCampi['Id'].','.$valueCampi['Id']; ?>" /><?php echo $valueCampi['Nombre'].'<br />
                  </td>
              </tr>';
    <? php } ?>
</form>

答案 2 :(得分:-1)

一般来说,我看到它的方式是复选框是ON还是OFF。因此,在我看来,复选框的名称是值。例如:

    <input type="checkbox" name="single"> Single?

如果选中该复选框(value =“on”),则答案为是。如果未选中(value =“off”或没有值),则答案为否。因此,我的PHP代码看起来像:

    if ($_POST['single'] == 'on')
       $single = true;
    else
       $single = false;

基本上,就我而言,永远不应该设置复选框的“值”。这是我特别喜欢的,而且对我来说效果很好。但是,它可能不适合您的需求。

祝你好运。