问题描述:

PHP:

if (isset($_POST['checkbox'])){

foreach ($_POST['checkbox'] as $x){

array_push($arr, judgeNametoID($x));

}

}

I've been getting errors when there's only one checkbox selected. If I keep the isset() in there, I don't get errors, only the checkbox selected is not added to the array.

Why is $_POST['checkbox'] not getting set if there's only one checkbox selected?

PHP/HTML of page with the checkboxes:

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>';

Errors when I remove the isset():

Notice: Undefined index: checkbox in c:\Inetpub\wwwroot\CaseManagement\changeuserjudgeprocess.php on line 11

Warning: Invalid argument supplied for foreach() in c:\Inetpub\wwwroot\CaseManagement\changeuserjudgeprocess.php on line 14

网友答案:

Is the input name actually checkbox? If you want to iterate through a list of checkboxes, you'll need html like this

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

But that doesn't help very much as you won't know which checkbox was checked, so you could try something like

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

and then loop through like so:

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

Of course, you may already have html like this, if so, we'll need to see it in order to help more :)

网友答案:

Maybe what you checked is the checkbox which the name is 'unchecked[]'

By the way, it is not necessary to give the unchecked checkbox a differernt name.

相关阅读:
Top