如何使用多个具有相同名称的表单输入?

Posted

技术标签:

【中文标题】如何使用多个具有相同名称的表单输入?【英文标题】:How can I use several form inputs with the same name? 【发布时间】:2013-02-03 00:51:21 【问题描述】:

我有几个从表单中的循环创建的复选框(我不知道它们的数量)。

<form>
<input type="checkbox" name="id" value="id">
<input type="checkbox" name="id" value="id">
...//create in a loop
<input type="checkbox" name="id" value="id">
</form>

我的问题是如何阅读它们,如果我使用&lt;?php $_REQUEST['id']; ?&gt;,它只会读取最后一个复选框。

【问题讨论】:

有什么用?他们都得到了相同的价值。无论如何,您可以使用名称数组。 【参考方案1】:

使用输入数组:

<input type="checkbox" name="id[]" value="id_a">
<input type="checkbox" name="id[]" value="id_b">
<input type="checkbox" name="id[]" value="id_c">
<!--                           ^^ this makes it an array -->

$_REQUEST['id']可以访问:

foreach($_REQUEST['id'] as $id)

    echo $id;

输出

id_a id_b id_c

旁注:这适用于$_POST$_GET(不仅仅是$_REQUEST)。一般来说,如果可能的话应该避免$_REQUEST

【讨论】:

哇,我从来不知道你能做到这一点!此方法是否适用于其他服务器端语言?是 W3 标准吗? @Stasel,是的,这是一个标准,并且与服务器端语言无关,因此所有现代服务器端语言都支持。如果您发现某种语言不支持它,您可以简单地为它创建一个解析器,因为浏览器会发送像 id[]=a,id[]=b,id[]=c 这样的原始数据,因此只要您可以访问原始帖子,任何语言都可以轻松阅读/获取数据。【参考方案2】:

为您的复选框使用唯一 ID,例如,

<form>
<input type="checkbox" name="id1" value="value1">
<input type="checkbox" name="id2" value="value2">
...//create in a loop
<input type="checkbox" name="id3" value="value3">
</form>

【讨论】:

@Ehsan 这个例子不是你应该使用的方式。您必须单独验证每个 ID,MyCode 发布的示例是您应该使用的 这可行,但它需要大量不必要的工作,因为您必须确保 name 是唯一的,然后在服务器端您必须循环数据数组并搜索密钥为id 确定它是否是值之一。 @Ehsan,根据生成 html 的内容,您可以使用我提供的唯一标识符,例如 PHP 中的 name="id$i"

以上是关于如何使用多个具有相同名称的表单输入?的主要内容,如果未能解决你的问题,请参考以下文章

具有相同名称属性的输入字段的多个表单?是好是坏?

当多个输入具有相同名称时,根据输入类型设置 jquery 表单验证

如何从具有相同名称的字段的表单创建 JSON 文件?

如何将具有相同ID和名称的多个输入类型号相乘

Laravel提交表单具有相同的输入名称ajax

使用 codeigniter 将具有相同输入名称的表单输入插入数据库行