2011-04-27 42 views
0

我不知道我错过这里经过,但我尽量让一个非常简单的形式中有一个checbox,这里是HTML:无法读取复选框数组的值提交表单

(...) 
    <input type="checkbox" name="test[]" value="js"> Javascript <br> 
    <input type="checkbox" name="test[]" value="php"> PHP <br> 
    <input type="checkbox" name="test[]" value="sql"> SQL <br> 
    <input type="checkbox" name="test[]" value="html"> HTML <br> 
(...) 

,这里是在PHP代码段,其假定来处理它:

echo '<pre>'; 
    print_r($_POST['test']); 
    echo '</pre>'; 
    print_r($_POST) 
    echo '<hr>'; 

这里输出

Array 
Array 
(  
    [stuff1] => 0 
    [stuff2] => 5 
    [stuff3] => 2 
    [test] => Array   
) 

形式的另一个输入s为良好的显示,但我无法解析这仅仅是一个名为“阵列”样本字符串数组的内容...

如果我尝试做一个

var_dump($_POST["test"]); //this is what I get: string 'Array' (length=5) 

回答

0

我找到了,原因是我使用的是旧的框架内作出或不激活magic_quotes的一个奇怪的声明,Ive得到magic_quotes的激活,它的逃逸包含在$ _ POST变量任何阵列...

foreach ($_POST as $key => $value) { 
    if ($value && !$is_magic_quotes_gpc) { 
     $_POST["$key"] = addslashes($value); 
    } 
} 

我只是删除这个片段,一切都还好吧

1

有一个很好的教程关于如何处理复选框使用php:http://www.html-form-guide.com/php-form/php-form-checkbox.html

基本上你的$_POST['test']是一个数组,如果没有复选框被选中是空的。如果用户选择了jsphp,那就好像是["js","php"]

如果你想通过所有选定的选择周期,你可以这样做:

foreach ($it in $_POST['test']) { 
    echo $it 
} 
+0

看看我的代码,我做一个print_r($ _ POST ['test']);我没有得到任何价值,因为它不是一个数组,它是一个字符串!当然,我之前在提交表单之前选择了一些框,我真的不知道这里发生了什么...... – krifur 2011-04-27 12:36:50

+0

它正在打印“数组”,因为数组是空的我想......它用var_dump($ _POST [“test”])' – dwarfy 2011-04-27 12:38:23

+0

string'Array'(length = 5) 我很迷惑:/ – krifur 2011-04-27 12:44:52

相关问题