2011-04-27 98 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