从多个复选框中获取POST数据?

时间:2011-10-04 21:18:52

标签: php post

我试图用PHP创建一个表单,我似乎找不到我需要的教程,所以我想在这里问。

我的页面上有一个复选框...

 <li>
    <label>What service are you enquiring about?</label>
    <input type="checkbox" value="Static guarding" name="service">Static guarding<br>
    <input type="checkbox" value="Mobile Patrols" name="service">Mobile Patrols<br>
    <input type="checkbox" value="Alarm response escorting" name="service">Alarm response escorting<br>
    <input type="checkbox" value="Alarm response/ Keyholding" name="service">Alarm response/ Keyholding<br>
    <input type="checkbox" value="Other" name="service">Other<input type="hidden" value="Other" name="service"></span>
  </li>

我不确定如何使用POST方法收集所有复选框值?

如果我使用

$service = $_POST['service'];

我只得到'其他'返回

3 个答案:

答案 0 :(得分:45)

将字段命名为service[]而不是service,然后您就可以将其作为数组进行访问。之后,您可以将常规函数应用于数组:

  • 检查是否选择了某个值:

     if (in_array("Other", $_POST['service'])) { /* Other was selected */}
    
  • 获取包含所有选定选项的单个换行符分隔字符串:

     echo implode("\n", $_POST['service']);
    
  • 循环显示所有选中的复选框:

     foreach ($_POST['service'] as $service) {
         echo "You selected: $service <br>";
     }
    

答案 1 :(得分:4)

目前它只是抓住你最后隐藏的输入。你为什么要在那里隐藏输入?如果要在选中“其他”框时收集信息,则必须隐藏

<input type="text" name="other" style="diplay:none;"/> 

并且当选中“其他”框时,您可以使用javascript显示它。这样的事情。

只需输入名称属性service []

即可
<li>
<label>What service are you enquiring about?</label>
<input type="checkbox" value="Static guarding" name="service[]">Static guarding<br>
<input type="checkbox" value="Mobile Patrols" name="service[]">Mobile Patrols<br>
<input type="checkbox" value="Alarm response escorting" name="service[]">Alarm response escorting<br>
<input type="checkbox" value="Alarm response/ Keyholding" name="service[]">Alarm response/ Keyholding<br>
<input type="checkbox" value="Other" name="service[]">Other</span>
</li>

然后在您的PHP中,您可以像这样访问它

$service = $_POST['service'];
echo $service[0]; // Output will be the value of the first selected checkbox
echo $service[1]; // Output will be the value of the second selected checkbox
print_r($service); //Output will be an array of values of the selected checkboxes

等...

答案 2 :(得分:-1)

<input type="checkbox" value="Other" name="service">Other<input type="hidden" value="Other" name="service"></span>

您有一个隐藏的输入字段,其名称与复选框的名称相同。与之前的字段同名的“later”字段将覆盖前一个字段的值。这意味着您的表单(如上所示)将始终提交service=Other

考虑到你的问题在html中的措辞,听起来更像是你想要一个单选按钮,它只允许选择一组同名字段中的一个。复选框是“AND”情况,单选按钮对应于“OR”