用php获取多个复选框名称/ id

时间:2011-01-07 23:29:25

标签: php forms checkbox

如何使用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>

4 个答案:

答案 0 :(得分:22)

仅当选中此复选框时,才会从表单提交复选框值。更重要的是,它是名称属性,而不是ID。

在PHP中有几种处理复选框的方法:

  1. 为所有复选框指定相同的名称,后跟一对方括号,以便将整个集合视为数组。在这种情况下,请为每个复选框指定一个值。
  2. 为每个复选框指定一个不同的名称和值。
  3. 为每个复选框指定一个不同的名称,但没有值。
  4. 在每种情况下,您需要检查$ _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()。

答案 1 :(得分: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">

然后迭代PHP中的$ _POST ['selection']数组。

答案 2 :(得分:4)

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

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

答案 3 :(得分: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']);
?>