我试图用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'];
我只得到'其他'返回
答案 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”