使用PHP获取具有相同名称的2个HTML输入标记的值

mag*_*gie 3 html php

假设我有下表:

<form  action="bla.php" method=post>
<table class="pv-data">
<tr>
<td><input type="text" name="id" size="2" value=1 /></td>
<td><input type="text" name="longitude" size="7"/></td>
<td><input type="text" name="latitude" size="7"/></td>
</tr>
<tr>
<td><input type="text" name="id" size="2" value=2 /></td>
<td><input type="text" name="longitude" size="7"/></td>
<td><input type="text" name="latitude" size="7"/></td>
</tr>
</table>
<input type="submit" name="submit" value="SUBMIT">
</form>
Run Code Online (Sandbox Code Playgroud)

我想将此表中的值分配给php变量,所以在 bla.php

如果我$id = $_REQUEST['id'];只使用 了最后一个值,因为有两个具有相同名称的输入标记.

那么我可以在php中请求这些具有相同名称的标签的2个值吗?

ps不要告诉我更改输入标签的名称,因为表格比这更复杂,并且它有动态添加行:我的真实代码是:http://jsfiddle.net/CchES/9/

Que*_*tin 9

当PHP填充时$_POST,如果多个数据具有相同的名称,并且该名称没有结束,[]那么只有一个数据将存在以显示在$_POST数组中.

重命名字段,以便名称结束[].

不要告诉我更改输入标签的名称,因为该表比这更复杂,并且它具有动态添加行

充满活力不应成为[]名称末尾的障碍.

如果你真的无法更改名称,那么就有可能$_POST完全绕过并解析原始数据(通过php://input),但是当它填充时,它会破坏IIRC,PHP $_POST.


Bar*_*mar 7

当您重复名称时,您必须为它们指定数组样式的名称:

<form  action="bla.php" method=post>
<table class="pv-data">
<tr>
<td><input type="text" name="id[]" size="2" value=1 /></td>
<td><input type="text" name="longitude[]" size="7"/></td>
<td><input type="text" name="latitude[]" size="7"/></td>
</tr>
<tr>
<td><input type="text" name="id[]" size="2" value=2 /></td>
<td><input type="text" name="longitude[]" size="7"/></td>
<td><input type="text" name="latitude[]" size="7"/></td>
</tr>
</table>
<input type="submit" name="submit" value="SUBMIT">
</form>
Run Code Online (Sandbox Code Playgroud)

当你这样做,$_POST['id'],$_POST['latitude'],和$_POST['longitude']将包含值阵列.

然后,您的表单处理代码可以迭代这些代码:

for ($i = 0; $i < count($_POST['id']); $i++) {
  if (isset($_POST['latitude'][$i], $_POST['longitude'][$i])) { // Make sure both are filled in
    // Do stuff with this row of the form
  }
}
Run Code Online (Sandbox Code Playgroud)