0

我有一个 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 请求,它也包含正确的键。必须有服务器端设置或禁用指定键并将其替换为顺序键的东西。希望有人知道解决方案。

4

0 回答 0