2011-01-07 27 views
6

如何在提交时使用PHP获取多个选定复选框的名称或ID?以下是示例表单。谢谢。使用php获取多个复选框名称/ ID

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
    <input type="checkbox" name="orange" id="orange"> 
    <input type="checkbox" name="apple" id="apple"> 
    <input type="checkbox" name="sky" id="sky"> 
    <input type="checkbox" name="sea" id="sea"> 
    <br> 
    <br> 
    <input type="submit" name="Submit" value="Submit"> 
</form> 

回答

18

复选框值从仅在复选框被选中表单提交。更重要的是,它的名称属性是重要的,而不是ID。

有很多PHP处理复选框几种方法:

  1. 给所有复选框相同的名称后面是一对方括号,因此整个组被作为阵列处理。在这种情况下,给每个复选框一个值。
  2. 给每个复选框一个不同的名称和值。
  3. 给每个复选框一个不同的名称,但没有值。

在每种情况下,都需要检查$ _POST数组中是否存在复选框名称。

例如:

<input type="checkbox" name="color[]" id="orange" value="orange"> 
<input type="checkbox" name="color[]" id="apple" value="apple"> 

要获取值这些复选框:

if (isset($_POST['color'])) { 
    $colors = $_POST['color']; 
    // $colors is an array of selected values 
} 

但是,如果每个复选框有不同的名称,这样明确的值:

<input type="checkbox" name="orange" id="orange" value="orange"> 
<input type="checkbox" name="apple" id="apple" value="apple"> 

您仍然需要使用isset():

if (isset($_POST['orange'])) { 
    // orange has been set and its value is "orange" 
} 

如果您未设置值,则默认值为“on”,但它不会位于$ _POST数组中,除非它已被选中,所以您仍然需要使用isset()。

4

你不会得到IDS但名称将是$_POST阵列(和$_REQUEST)在关联索引。注意:只有在客户端检查它们时,它们才会在阵列中可用。

if ($_POST['oragne'] == 'on')

9

你需要给输入同一个名字:

<input type="checkbox" name="selection[]" value="orange"> 
<input type="checkbox" name="selection[]" value="apple"> 
<input type="checkbox" name="selection[]" value="sky"> 
<input type="checkbox" name="selection[]" value="sea"> 

然后在$ _ POST [ '选择']在PHP数组迭代。

+0

如果您只是将它们命名为相同,则这不起作用。你需要将它们设置为数组:`name =“selection [index]”` – 2011-01-07 23:40:13

2

您可以设置它们张贴到PHP为数组,如果他们建立类似如下:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
    <input type="checkbox" name="box_group_1[oragne]" id="oragne"> 
    <input type="checkbox" name="box_group_1[apple]" id="apple"> 
    <input type="checkbox" name="box_group_1[sky]" id="sky"> 
    <input type="checkbox" name="box_group_1[sea]" id="sea"> 
    <br> 
    <br> 
    <input type="submit" name="Submit" value="Submit"> 
</form> 
<?php 
print_r($_POST['box_group_1']); 
?>