选中仅选中一个复选框时,复选框发布变量/数组

时间:2011-08-30 15:19:45

标签: php

PHP:

if (isset($_POST['checkbox'])){
    foreach ($_POST['checkbox'] as $x){
        array_push($arr, judgeNametoID($x));
    }
}

当只选中一个复选框时,我一直在收到错误。如果我在那里保留isset(),我不会收到错误,只有选中的复选框没有添加到数组中。

如果只选中了一个复选框,为什么$ _POST ['复选框']没有设置?

带有复选框的页面的PHP / HTML:

echo '<ul>';
            $list = getActiveJudges();
            foreach ($list as $x){
                $found = 0;
                    foreach ($arr as $y){
                        if ($x == $y){
                            $found = 1;
                            break;
                        }
                    }
                    if ($found==1){
                        echo '<li>';
                        array_push($selectedJudges, judgeNametoID($x));
                        echo '<input type="checkbox" checked="checked" name="checkbox[]" value="'.$x.'" />'.$x.'<br/>';
                        echo '</li>';   
                    }
                    else {
                        echo '<li>';
                        echo '<input type="checkbox" named="unchecked[]" value="'.$x.'" />'.$x.'<br/>';
                        echo '</li>'; 
                    }
            }
                echo '</ul>';

删除isset()时的错误:

注意:未定义的索引:第11行的c:\ Inetpub \ wwwroot \ CaseManagement \ changeuserjudgeprocess.php中的复选框

警告:在第14行的c:\ Inetpub \ wwwroot \ CaseManagement \ changeuserjudgeprocess.php中为foreach()提供的参数无效

2 个答案:

答案 0 :(得分:1)

输入名称实际上是复选框吗? 如果你想遍历一个复选框列表,你需要像这样的HTML

<input type="checkbox" name="checkbox[]">
<input type="checkbox" name="checkbox[]">
<input type="checkbox" name="checkbox[]">

但这并没有多大帮助,因为你不知道检查了哪个复选框,所以你可以尝试类似的东西

<input type="checkbox" name="checkbox[checkbox1]">
<input type="checkbox" name="checkbox[checkbox2]">
<input type="checkbox" name="checkbox[checkbox3]">

然后像这样循环:

if(isset($_POST['checkbox'])){
    foreach($_POST['checkbox'] as $checkboxID => $checkboxVal){
         // $checkboxID will be checkbox1, checkbox2, checkbox3 as specified above.
         // $checkboxVal will always be 'on'
    }
}

当然,您可能已经拥有这样的HTML,如果是这样,我们需要看到它才能提供更多帮助:)

答案 1 :(得分:1)

也许您选中的是名称'未选中[]'

的复选框

顺便说一下,没有必要给未选中的复选框一个不同的名称。