2011-04-13 114 views
-1
<form action="test.php" method="post"> 
Name: <input type="text" name="fname" /> 
<input type="hidden" name="fname" value="test" /> 
Age: <input type="text" name="age" /> 
<input type="submit" /> 
</form> 

如何读取名为fname的两个字段的值?读取两个具有相同名称的表单元素

在我的动作文件(test.php)$_POST下,我只获取隐藏字段值。

是否有任何PHP设置可以通过它读取这两个值?

回答

10

我相信你想命名字段:

Name: <input type="text" name="fname[]" /> 
<input type="hidden" name="fname[]" value="test" /> 

使PHP了解他们作为一个数组。

+0

其实我发布的目的是要知道我们是否有一些设置在PHP.ini,这将帮助我实现我想要的东西....我读了他们是在PHP.ini中的一些设置...但不清楚... ...任何帮助将高度赞赏...谢谢你初始帮助... – LazyD 2011-04-14 04:07:22

+0

我不能让它阵列..它动态生成...可以同时获得值或文本字段值...可以通过PHP.ini中的“variables_order”或其他类似设置....在此先感谢 – LazyD 2011-04-15 06:34:03

+0

我认为这取决于您的需求。如果有时候有'1'字段,有时候''n'字段有相同的名字,你仍然可以把它变成一个数组。(不要忘记一个数组可以有1的长度);-) – scunliffe 2011-04-15 13:28:10

2

如果您想要传递两个具有相同名称的表单输入,则需要将它们作为数组。例如:

<input type="text" name="fname[]" /> 
<input type="hidden" name="fname[]" value="test" /> 

您可以使用以下,然后访问它:

$_POST['fname'][0] 
$_POST['fname'][1] 

你可能要重新考虑你是否真的需要,虽然使用相同的名称。

+0

同@ scunliffe对此有何回应? – Khez 2011-04-13 03:21:01

+1

我实际上已经发布了它,然后对其进行了编辑,使它看起来像我之后发布的。另外,他没有提到如何实际访问PHP中的值:) – soulkphp 2011-04-13 03:23:31

+0

其实我发布的目的是要知道我们是否在PHP.ini中有一些设置,这将帮助我实现我想要的东西....我读了他们是在PHP.ini中的一些设置...但不清楚...任何帮助将高度赞赏...感谢您的初步帮助... – LazyD 2011-04-14 04:09:41

0

解是

1)尝试对文本框和隐藏值 2使用不同的名称)如上所述用于现场名 3)及其不可能的,因为如果名称相同的值将被覆盖使用的阵列

4

如果有人想这样做并且不想改变表单元素的名称,或者不能改变,那么仍然有一种方法可以完成 - 你可以解析$ _SERVER ['QUERY_STRING' ]或http_get_request_body()值直接。

它会像

$vals=explode('&',http_get_request_body()); 
$mypost=Array(); 
foreach ($vals as $val) { 
    list($key,$v)=explode('=',$val,2); 
    $v=urldecode($v); 
    $key=urldecode($key); 
    if ($mypost[$key]) $mypost[$key][]=$v; 
    else $mypost[$key]=Array($v); 
} 

这样$mypost结束张贴的东西的数组有这样的名称(如果有一两件事给定的名字,这将是一个数组包含一切只有一个元素,访问$mypost['element_name'][0])。

对于用做查询字符串相同,更换http_get_request_body()$_SERVER['QUERY_STRING']

+0

为了将它与更普通的接口结合起来,你可以使它看起来像你在上面的代码之后执行多个输入“whatever []”一样......'foreach($ mypost as $ a => $ b){if (count($ b)> 1)$ _POST [$ a] = $ b;}' - 这样您将有$ _POST操作单个元素的正常方式,但是当有多个元素时将它作为数组操作。但是这会导致代码混乱的情况下,你期望多个元素,但计数恰好是1 - 它需要被视为一种特殊情况。 – 2013-05-05 13:13:33

相关问题