4

この質問にタイトルを付けるかどうかはわかりませんでした。これが私の目標です:

1 ページ目に、データベースから生成されたフォームがあります。カウント変数をフィールドの id に割り当ててループします (つまり、header_1、header_2、header_3...)。

ここで、追加情報 (つまり、header_4、header_5) を追加する必要があるため、フィールドの量は異なる場合があります。

フォームを送信するときに、各フィールドの変数を作成するにはどうすればよいですか?

$header1 = $_POST['header_1']

基本的に、私は次のようなものを単純化する配列ベース (または可変変数ベース) の方法を探しています。

$sql="UPDATE about SET about_header = '$head1', about_content = '$post1' WHERE about_id = '$id1'";
$result = mysql_query($sql);
$sql="UPDATE about SET about_header = '$head2', about_content = '$post2' WHERE about_id = '$id2'";
$result = mysql_query($sql);
$sql="UPDATE about SET about_header = '$head3', about_content = '$post3' WHERE about_id = '$id3'";
$result = mysql_query($sql);

このようなクエリはうまくいくと思いますが、構築の助けが必要な情報の配列を処理する方法がわかりません。

$y=1;
$sql="UPDATE about SET about_header = '$head$y', about_content = '$post$y' WHERE about_id = '$id$y'";

これを十分に説明したことを願っています。どんな助けでも素晴らしいでしょう。ありがとう!

4

2 に答える 2

6

次のようなことを試したことがありますか:

<input name="header[]" />
<input name="header[]" />
<input name="header[]" />

これにより、PHP 側で簡単に循環できる多次元配列が作成されます。

echo $_POST['header'][0];
echo $_POST['header'][1];
echo $_POST['header'][2];

これには準備済みステートメントを使用する方が高速ですが、データベースとのやり取りには PDO などを使用するように切り替える必要があります。上記のコードを使用してループ処理を行う例を次に示します。

$fieldCount = count($_POST['header']);
for ($i = 0; $i < $fieldCount; $i++) {
   $sql = 'UPDATE about SET about_header = \''.$_POST['header'][$i].'\', about_content = \''.$_POST['post'][$i].'\' WHERE about_id = \''.$_POST['id'][$i].'\'';
   mysql_query($sql);
}
于 2012-04-05T15:16:30.767 に答える
1
<input type="text" name="head[]" />
<input type="text" name="head[]" />
<input type="text" name="head[]" />

<?php
foreach ($_POST['head'] as $head) {
    // ....
}
?>

このように入力に名前を付けると(配列のような表記に注意してください)、次のようになります。

$_POST == array( 'head' => array(
  0 => FIRST TEXT DATA,
  1 => SECOND TEXT DATA,
  2 => THIRD TEXT DATA
))
于 2012-04-05T15:17:18.267 に答える