2012-02-03 25 views
3

動的に作成されたフォームを使用してページのコンテンツを編集しようとしています。 DBテーブル(この場合は画像キャプション)から情報を取得し、編集可能なテキスト領域に表示してDBに保存し直します。動的に生成されたフォームからデータを取得する

これは、フォームを整理して表示する仕事をするようだ:

echo"<form action='edit.php' method='post'>"; 
for ($limit;$limit<=$all_values;$limit++) 
    { 
     echo "<textarea cols='15' rows='3' name='caption' value='$caption_arr[$limit]'> 
      $caption_arr[$limit]</textarea><br> 
     } 
     echo "<br><input type='submit' value='Edit' name='pictureEedit'></form>"; 

しかし、何かがここからうまくいきません。私はedit.phpでこれを入力します:

$caption=$_POST['caption']; 
echo $caption; 

そして私は最後のフィールドからのみキャプションを取得します。フォームにチェックボックスを追加すると、1つしかチェックしなかったが、2つ以上チェックした場合は、最後のものの値がわかります。

また、私はこの試みた:

$caption[$x]=$_POST['caption']; 
foreach ($caption as $key => $value) {echo $key.$value.'<br>';} 

を同じ結果を得ました。

答えて

3
フォームで

name='caption' 

あなたが行うことができます上の

name='caption[]' 

以降である必要があります:

foreach ($_POST['caption'] as $key => $value) {echo $key.'=>'.$value.'<br>';} 
+0

十分に感謝します。 – spacitron

+0

好奇心ではない。保存されたフィールドだけを更新する方法はありますか?ギャラリーに1000個の画像とキャプションがあり、キャプションが1つしか編集されていないとしたら、スクリプトですべてのキャプションが更新されるようにすると意味がありますか?それとも、編集されたものだけを修正する方法がありますか? – spacitron

+0

あなたは本当に変わったものを見つけなければなりません。したがって、フォームに表示されているすべての項目を読み込み、提出されたときに$ _POST値をチェックする必要があります。 – djot

0

あなたはすべてのフィールドに同じ名前を使用することはできません。あなたはそれらの配列を作る必要があります。試してみてください

name='caption[]' 
関連する問題