0

各行がデータベース エントリであり、独自の入力フィールドとボタンを持つテーブルを含む HTML フォームがあります。エントリの id をキーとして配列表記 ( などname="edit[<?php echo $entry['id']; ?>]") を使用して、どのエントリを編集/削除する必要があるかを PHP で判断します。

これは HTML フォームと 2 つのサンプル行です。

<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"
  }
}

そして、それは、スクリプトを実行する必要がある共有 Web スペース (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 フォームには正しい配列キーが含まれています。送信された POST リクエストを firebug で確認しましたが、正しいキーも含まれています。サーバー側の設定か、指定されたキーを無効にして連続キーに置き換える何かが必要です。誰かが解決策を知っていることを願っています。

4

0 に答える 0