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

Posted

技术标签:

【中文标题】使用 php 获取多个复选框名称/ID【英文标题】:getting multiple checkboxes names/id's with php 【发布时间】:2011-06-05 14:20:50 【问题描述】:

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

【问题讨论】:

【参考方案1】:

如果选择复选框,则从表单中提交复选框。更重要的是,重要的是 name 属性,而不是 ID。

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

    为所有复选框赋予相同的名称,后跟一对方括号,因此整个集合被视为一个数组。在这种情况下,给每个复选框一个值。 为每个复选框指定不同的名称和值。 为每个复选框指定不同的名称,但没有值。

在每种情况下,您都需要检查 $_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()。

【讨论】:

【参考方案2】:

您需要为输入提供相同的名称:

<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'] 数组。

【讨论】:

如果您只是将它们命名为相同,这将不起作用。您需要将它们设置为数组:name="selection[index]" 修复了这个例子。另外我认为你可以省略索引,它们会自动被索引。 是的,您也可以这样做,但他确实明确要求保留“名称”属性。索引可以替代它。【参考方案3】:

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

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

【讨论】:

【参考方案4】:

如果你像下面这样构建它们,你可以将它们设置为以数组的形式发布到 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']);
?>

【讨论】:

以上是关于使用 php 获取多个复选框名称/ID的主要内容,如果未能解决你的问题,请参考以下文章

如何在php中获取多个选定(动态)复选框的值?

php 如何获取复选框的多个值,并且不被覆盖

当复选框名称来自php中的数据库时,如何访问多个复选框名称

PHP:如何使用 whereIn 子句根据多个 ID 更新一列

PHP:可以自动获取所有已发布的数据并且未选中多个复选框?

如何将多个选定的(通过复选框)行 ID 传递给 jQuery 中的 php 脚本?