如何使用多个具有相同名称的表单输入?
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>
我的问题是如何阅读它们,如果我使用<?php $_REQUEST['id']; ?>
,它只会读取最后一个复选框。
【问题讨论】:
有什么用?他们都得到了相同的价值。无论如何,您可以使用名称数组。 【参考方案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"
。以上是关于如何使用多个具有相同名称的表单输入?的主要内容,如果未能解决你的问题,请参考以下文章