0

次のフォームを保存するにはどうすればよいですか?

<form name="myform">
<input type="text" name="title" value="title" />

$result = mysql_query("SELECT id, text from details where parent='$parent' 
order by id asc") or die('Error');
while(list($id,$ftext) = mysql_fetch_row($result)) {
?>
<textarea name="formfield<?php echo $id;?>" id="<?php echo $id;?>">
<?php echo $ftext;?>
</textarea>
<?php
}
</form>

上記のように、MySQL クエリはデータをロードし、テキストエリアを動的に作成します。

<textarea name="formfield34" id="34">text</textarea>
<textarea name="formfield56" id="56">more text</textarea>        
<textarea name="formfield78" id="78">anothet text</textarea>   

次のようにデータベースを更新する必要があります。

$result = mysql_query("UPDATE details SET text='$formfield34' WHERE id ='34'") or die('Error');
$result = mysql_query("UPDATE details SET text='$formfield56' WHERE id ='56'") or die('Error');
$result = mysql_query("UPDATE details SET text='$formfield78' WHERE id ='78'") or die('Error');

問題は、フォームごとに動的にロードされるテキストエリアの数が異なり、$id が異なることです。このフォームを保存することは、私には想像できません。

ありがとう。

4

2 に答える 2

3

おそらく行う必要があるのは、次のようにフォーム フィールド名に配列表記を使用することです。

<textarea name="formfield[34]" id="34">text</textarea>
<textarea name="formfield[56]" id="56">more text</textarea>        
<textarea name="formfield[78]" id="78">anothet text</textarea>

PHP は、自動的に配列を構築し$_POST['formfield']ます。このすべてのデータにアクセスできます。これにより、この配列を簡単にループして更新用の SQL を生成できます。

foreach($_POST['formfield'] as $key => $value) {
    // write SQL here
}

ここで、個々の SQL クエリの束ではなくREPLACE、単一のクエリでデータを挿入/更新できるように構文を使用することを検討することをお勧めします。

于 2013-04-29T20:01:08.627 に答える
0

テキストエリアの作成中の「while」で、これらのテキストエリアのIDで配列を保存します。

次に、配列をたどって、必要なときにIDを使用します

于 2013-04-29T19:58:44.270 に答える