1

PHPを介して行で送信しようとしているフォームのモックアップ

[フィールドの追加] オプションがあり、事実上無制限のアイテム番号と説明を追加できるフォームがあります。

これらのフィールドには次の名前が付けられています:item[]およびdesc[](配列の括弧)。

私の質問は、各行 (アイテムと説明) がデータベース内の独自の行として送信されるように、PHP と MySQL でこの情報を送信するにはどうすればよいですか?

item[0] と desc[0] を一緒に送信するなど、複数の方法を試しましたが、役に立ちません:(

事前にご協力いただきありがとうございます。

編集:以下は私が使用しようとしてきたものです...(申し訳ありませんが、配列ではそれほど優れていません...)

$count = 0
foreach ($_POST['item'] as $item) {
    $query = "INSERT INTO items (item, desc) VALUES ('" . $item[$count] . "', '" . $_POST['desc'][$count] . "')";
        // Script simplified as it is quite complex.
    if ($query_result) {
        $count++;
    }
}
4

2 に答える 2

3

foreach ループを使用して入力フィールドのいずれかをループしてから、他のフィールドにアクセスできます。

foreach($_POST['item'] as $key => $item){
    //your code
    $desc = $_POST['desc'][$key];
}

編集:あなたのコードスクリプトに従って、次のようになります

$count = 0
foreach ($_POST['item'] as $key => $item) {
    $query = "INSERT INTO items (item, desc) VALUES ('" . $item . "', '" . $_POST['desc'][$key] . "')";
        // Script simplified as it is quite complex.
    if ($query_result) {
        $count++;
    }
}
于 2013-05-14T19:32:26.267 に答える
2

あなたをさらに助けるために、私は次のことを提案するかもしれません.

次のようにフィールドに名前を付けます。

line[1][item]
line[1][desc]

line[2][item]
line[2][desc]

etc...

次に、PHP でデータを表示すると、データがより「意味のある」ものになります。

<?php
$count = 0;
foreach ($_POST['line'] as $line => $vals) {
  $item = $vals['item']; /* do some kind of input validation here */
  $desc = $vals['desc']; /* do some kind of input validation here */

  /* if no errors, continue */

  $sql = "INSERT INTO `items` (`item`,`desc`) VALUES ('$item', '$desc')";
  if (mysql_query ($sql)) {
    $count++;
  }
}
?>

この方法の方が柔軟だと思います。ちょうど私の2セント。

ルーク

于 2013-05-14T20:16:02.873 に答える