【问题标题】: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;,它只会读取最后一个复选框。

【问题讨论】:

  • 有什么用?他们都得到了相同的价值。无论如何,您可以使用名称数组。

标签: php html forms query-string html-input


【解决方案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}"
猜你喜欢
  • 2014-11-28
  • 2017-08-03
  • 1970-01-01
  • 2016-07-09
  • 2017-11-06
  • 2014-12-19
  • 2018-02-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多