2013-02-18 32 views
4

我有几个复选框(我不知道它们的数量),从窗体中的循环创建。如何使用同名的多个表单输入?

<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']; ?>,它只读取最后一个复选框。

+0

有什么用?他们都获得了相同的价值。无论如何,你可以使用一个名称数组。 – Shikiryu 2013-02-18 14:55:54

回答

13

使用输入数组:

<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应尽可能避免。

+0

谢谢@MrCode – Ehsan 2013-02-18 14:45:59

+0

哇我永远不知道你可以做到这一点!此方法与其他服务器端语言一起使用吗?它是W3标准吗? – Stasel 2013-02-18 15:23:10

+0

@Stasel,是的,这是一个标准,是服务器端语言不可知的,所以受到所有现代服务器端语言的支持。如果你发现它不支持一种语言,你可以简单地为它创建一个解析器,因为浏览器发送原始数据,比如'id [] = a,id [] = b,id [] = c'等等只要您有权访问原始帖子/获取数据,便于用任何语言阅读。 – MrCode 2013-02-18 15:32:51

-4

使用独特的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> 
+0

我不知道计数,那我怎么读它们? – Ehsan 2013-02-18 14:52:19

+0

@Ehsan这个例子不是你应该使用的方式。您必须单独验证每个ID,MyCode发布的示例就是您应该使用的示例。 – 2013-02-18 15:14:33

+0

这可行,但它需要大量不必要的工作,因为您必须确保“名称”是唯一的,然后在服务器端你必须循环数据数组并搜索'id'键来确定它是否是其中的一个值。 – MrCode 2013-02-18 15:34:51

相关问题