各行がデータベース エントリであり、独自の入力フィールドとボタンを持つテーブルを含む 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 で確認しましたが、正しいキーも含まれています。サーバー側の設定か、指定されたキーを無効にして連続キーに置き換える何かが必要です。誰かが解決策を知っていることを願っています。