我有一个HTML表单,其中包含一个表,其中每一行都是一个数据库条目,并且拥有自己的输入字段和按钮。我使用数组表示法(例如name="edit[<?php echo $entry['id']; ?>]"
)并将条目的id作为键来确定PHP中应编辑/删除哪个条目。
这就是HTML表单和两个示例行:
<form class="form-inline" action="index.php" method="POST" name="foo_form">
...
<tr>
<td>14</td>
<td><input type="text" class="input" placeholder="fooooo" name="headline[14]" value="fooooo"/></td>
<td><textarea class="input-block-level" rows="2" name="text[14]">lorem ipsum123</textarea></td>
<td>
<input name="edit[14]" type="submit" class="btn" value="save changes"/>
<input name="delete[14]" type="submit" class="btn" value="delete"/>
</td>
</tr>
<tr>
<td>15</td>
<td><input type="text" class="input" placeholder="baaar" name="headline[15]" value="baaar"/></td>
<td><textarea class="input-block-level" rows="2" name="text[15]">lorem ipsum456</textarea></td>
<td>
<input name="edit[15]" type="submit" class="btn" value="save changes"/>
<input name="delete[15]" type="submit" class="btn" value="delete"/>
</td>
</tr>
...
</form>
假设我按下id为15的条目的删除按钮,那么这是我在家里的开发服务器上获得的var_dump($_POST)
输出(PHP版本5.3.10-1ubuntu3.8)和我的托管vServer(PHP版本5.3.2-1ubuntu4.21):
array(3) {
["headline"]=>
array(2) {
[14]=>
string(6) "fooooo"
[15]=>
string(5) "baaar"
}
["text"]=>
array(2) {
[14]=>
string(14) "lorem ipsum123"
[15]=>
string(14) "lorem ipsum456"
}
["delete"]=>
array(1) {
[15]=>
string(6) "delete"
}
}
这就是我在共享网站空间(PHP版本5.3.27)上获得的内容,其中脚本必须运行。缺少正确的ID作为数组键,我得到0,1,... n作为数组键:
array(3) {
["headline"]=>
array(2) {
[0]=>
string(6) "fooooo"
[1]=>
string(5) "baaar"
}
["text"]=>
array(2) {
[0]=>
string(14) "lorem ipsum123"
[1]=>
string(14) "lorem ipsum456"
}
["delete"]=>
array(1) {
[0]=>
string(6) "delete"
}
}
文件完全相同,HTML表单包含正确的数组键。我用firebug检查了发送的POST请求,它也包含正确的密钥。必须有服务器端设置或禁用指定键并用顺序键替换它的东西。希望有人知道解决方案。