PHP POST打印复选框条目:我在论坛上找不到任何工作


PHP POST print check box entries: nothing I have found on forums works

我搜索了论坛——在这里和其他地方——试图找到一种方法,从POST表单中打印出选中的选项,该表单使用名为areas[]的复选框组,其中VALUE从1开始,然后再打印另外6个选项。因此,在每种情况下,NAME都是areas[],但VALUE从1到6。

(此表格中的所有其他条目,如姓名、电话号码等,都会顺利结转。(

充其量,当我尝试(举一个我尝试过的例子(时

$arr = $_POST[areas] 

然后尝试为数组上的每个数组打印单词"array"。太棒了

如果我尝试$_POST['areas']我收到一个服务器错误。我在论坛上发现的很多事情都会导致服务器错误。

我已经尝试了所有显而易见的事情——用for而不是for each循环。。。我最多得到Array,或者更奇怪的是,A。我在测试中总是选择3个选项。

我使用的是PHP 5.3.8。

有人能提出一些可行的建议吗?

如果显示的每个复选框的值在$_POST[‘reas’]:中,则必须对其进行检查

$areas = $_POST['areas']; // if you get an error here, check your code cause it must work
//Some code...
$checked = '';
if (in_array($value, $areas)){
    $checked = 'checked="CHECKED"';
}
echo '<input type="checkbox" name="areas[]" '.$checked.' value="'.$value.'"/>';

您的问题很可能与html返回复选框值的方式有关。

如果选中了复选框,则返回其值;如果未选中,则不返回任何值。

在一个从名为name='colours[]'的复选框中选择颜色的情况下,您的值如下:(第一行是选项,第二行是php中返回的数组(

[x] red  [ ] green  [ ] blue  [x] yellow  [ ] black  [ ] white
    array('red','yellow')
[ ] red  [ ] green  [ ] blue  [x] yellow  [ ] black  [x] white
    array('yellow','white')
[ ] red  [ ] green  [ ] blue  [ ] yellow  [ ] black  [ ] white
    null (no array returned)

一种方法是为每个选项使用不同的名称,并以这种方式检查您的值:

$red = isset($_POST['ck_red']);
$green = isset($_POST['ck_green']);
...

当然,如果您将红色复选框定义为name='ck_red'

编辑
(您的代码如下(

html:

<INPUT TYPE="CHECKBOX" NAME="areas[]" VALUE="1">The Homeless</INPUT><BR />
<INPUT TYPE="CHECKBOX" NAME="areas[]" VALUE="2">The Elderly</INPUT><BR />
<INPUT TYPE="CHECKBOX" NAME="areas[]" VALUE="3">Refugees</INPUT><BR />
<INPUT TYPE="CHECKBOX" NAME="areas[]" VALUE="4">The handicapped</INPUT><BR /> 

php:

$areas[] = "$_POST[areas]"; 
foreach ($areas as $value) { 
    echo $value . " "; 
} 

答案:您在分配$areas[] = "$_POST[areas]";时出错,即在$_POST[areas]周围使用"时出错-这样做是在告诉解析器,您想知道变量$_POST[areas]的文本值,它是一个数组,php处理它的方法是返回TEXT"array">,而不是(例如在javascript中(由coma分隔的元素列表。另一个错误是,尽管它可以正常工作,但您正在引用未定义的常量areas,而不是像$_POST['areas']中那样引用字符串文字'areas'(注意密钥名称周围的单引号'(。最后一个错误将$_POST['areas']分配给$areas[],而不是$areas(没有[](。您在那里所做的是将数组的一个新元素添加到数组(区域(中,为其分配$_POST['areas']的值,因此如果没有第一个错误("(,它将创建二维数组areas => array(array('a','b','c'))

修复(php(:

$areas = $_POST['areas'];
foreach ($areas as $value) { 
    echo $value . " "; 
}