2

人の名前と名前を含むフォームがあります。ユーザーは、JSを介して新しい入力フィールドを作成するリンクを使用して複数のユーザーを追加できます。2人が含まれるフォームの例を次に示します。

<form action="" method="post">
    <input type="text" class="required" name="people[first][]" />
    <input type="text" class="required" name="people[last][]" />

    <input type="text" class="required" name="people[first][]" />
    <input type="text" class="required" name="people[last][]" />

    <input type="submit" name="submit">
</form>

このデータをデータベースに挿入する方法を見つけようとしています。私は使用してみました:

foreach ($_POST['people'] as $person) {
  foreach ($person as $value) {
    echo $value . '<br/>';
  }
}

..結果として

ファーストネーム1
ファーストネーム2
ラストネーム1
ラストネーム2

first name x+last name xの組み合わせごとに新しい行を挿入できるように、結果を何らかの方法でグループ化しようとしています。

4

2 に答える 2

4

次のような入力要素を作成します。

<input type="text" name="people[0][first]" />
<input type="text" name="people[0][last]" />
<input type="text" name="people[1][first]" />
<input type="text" name="people[1][last]" />

PHPの場合:

foreach ($_POST['people'] as $person) {
  echo $person['first'].' '.$person['last'].'<br />';
}
于 2012-06-12T17:47:44.137 に答える
1

$_POST['people']['first']名の配列です。
$_POST['people']['last']は名前の配列です。

これらを次のように配列の配列にマージできます。

$people = $_POST['people'];
$length = count($people['first']);
for($i = 0; $i < $length; $i++)
    $temp[] = array('first' => $people['first'][$i], 'last' => $people['last'][$i]);
$people = $temp;

結果$peopleの配列は連想配列の配列になり、次のようになります。

Array
(
    [0] => Array
        (
            [first] => Jim
            [last] => Smith
        )

    [1] => Array
        (
            [first] => Jenny
            [last] => Johnson
        )

)

これは、bsdnoobzが示したように、HTMLを変更することで得られる配列と同等です。それを繰り返すことも同じです:

foreach ($people as $person) {
    echo $person['first'] . ' ' . $person['last'] . '<br />';
}
于 2012-06-12T17:49:00.547 に答える