0

8つのプロパティを持つPHPクラスと、オブジェクトごとに8つの40(8 * 5)テキストボックスを持つHTMLフォームがあるため、ユーザーは一度に5つのオブジェクトのデータを入力できます。

ボックスのセットごとに、クラスのオブジェクトを作成してデータベースに保存します。たとえば、ユーザーが10個のボックス(2セット)に入力した場合、2つのオブジェクトを作成して保存する必要があります。

4

1 に答える 1

1

私があなたを正しく理解しているなら、ここにHTMLフォームの例があります:

<form action="" method="post">
  <fieldset>
    <legend>Group 1</legend>
    <div>
      <input type="text" name="groups[0][first_name]" />
    </div>
    <div>
      <input type="text" name="groups[0][last_name]" />
    </div>
  </fieldset>

  <fieldset>
    <legend>Group 2</legend>
    <div>
      <input type="text" name="groups[1][first_name]" />
    </div>
    <div>
      <input type="text" name="groups[1][last_name]" />
    </div>
  </fieldset>

  <fieldset>
    <legend>Group 3</legend>
    <div>
      <input type="text" name="groups[2][first_name]" />
    </div>
    <div>
      <input type="text" name="groups[2][last_name]" />
    </div>
  </fieldset>
</form>

フィールド名、フィールドのグループ化方法に注意してください。このようなフォームを送信すると、$_POSTスーパーグローバル配列には次の構造の$_POST['groups']配列が含まれます。

Array
(
    [0] => Array
        (
            [first_name] => 
            [last_name] => 
        )

    [1] => Array
        (
            [first_name] => 
            [last_name] => 
        )

    [2] => Array
        (
            [first_name] => 
            [last_name] => 
        )

)

このようなデータは、次のようなコードで簡単に処理できます。

foreach ($_POST['groups'] as $group) {
  $group = array_filter($group);

  if (!empty($group)) {
    // do something with group
  }
}

この小さな例は、送信されたすべてのグループをループします。array_filter()関数は、各$ group配列からすべての空の値を破棄し、!empty(...)は$groupが空でないことを確認します。

于 2012-06-19T13:59:40.053 に答える