2011-08-30 143 views
2

PHP:复选框后变量/数组时,有选择只有一个复选框

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

我已经得到的错误时,只有一个选择的复选框。如果我将isset()保留在那里,我不会收到错误,只有选中的复选框才会添加到数组中。

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

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()函数:在C复选框:

说明:未定义指数\的Inetpub \ wwwroot的\ CaseManagement \ changeuserjudgeprocess.php第11行

警告:提供的foreach无效参数(c)中:\的Inetpub \ wwwroot的\ CaseManagement \ changeuserjudgeprocess.php上线14

+0

你得到了什么错误; foreach()期望一个数组? – ianbarker

+0

显示您的html代码。 – xdazz

回答

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这样的,如果是这样,我们需要看到它,以帮助更多的:)

+0

是的,我的html完全像你的第一个复选框列表。 –

+0

好的,太棒了!你准确得到什么错误? –

+0

编辑上面有我的错误 –

1

你检查什么也许是名称是复选框“未选中[]”

顺便说一句,这是没有必要给未选中的复选框一个differernt名。

+0

我意外地离开后,意识到未经检查的复选框不张贴。 –