假设我有下表:
<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/
当PHP填充时$_POST,如果多个数据具有相同的名称,并且该名称没有结束,[]那么只有一个数据将存在以显示在$_POST数组中.
重命名字段,以便名称结束[].
不要告诉我更改输入标签的名称,因为该表比这更复杂,并且它具有动态添加行
充满活力不应成为[]名称末尾的障碍.
如果你真的无法更改名称,那么就有可能$_POST完全绕过并解析原始数据(通过php://input),但是当它填充时,它会破坏IIRC,PHP $_POST.
当您重复名称时,您必须为它们指定数组样式的名称:
<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)