0

入力テキスト フィールドを動的に追加するために jQuery プラグインを使用しています。name入力要素のはname="cl[]"、 になりname="ingredient[]"ます。

これらのフィールドを何らかの方法でデータベースに送信する必要があります...追加する必要があるテキスト フィールドが 1 つしかない場合は、次のような単純なループを
実行するだけでよいと思います。foreach

foreach($ingredient as $val){
    //  do an ordinary PDO sql insert statement on each of them
}

しかし、2 つのテキスト フィールドと、前のクエリから最後に挿入された ID をそれぞれに送信する必要があります。2 つのフィールドを追加すると、合計で 3 つのフィールドが送信されます。このような:

<input type="text" name="oz[]" id="cl_1" placeholder="cl" class="cl" >
<input type="text" name="ingredient[]" id="ingredient_1" placeholder="ingredient name" class="ingredient" />

<input type="text" name="oz[]" id="cl_2" placeholder="cl" class="cl" >
<input type="text" name="ingredient[]" id="ingredient_2" placeholder="ingredient name" class="ingredient" />

<input type="text" name="oz[]" id="cl_3" placeholder="cl" class="cl" >
<input type="text" name="ingredient[]" id="ingredient_3" placeholder="ingredient name" class="ingredient" />

これらのフィールドは、別のテーブルに挿入される飲み物の材料であり、最後の ID は関係キーです。

これを達成する方法について何か提案はありますか?

更新: 名前の付いた非表示のテキスト フィールドを追加し、raw_materials[]そのフィールドで ẁhile` ループを実行しようとしました。
次に、この while ループ内で sql insert ステートメントを実行します。多分私は何かに取り組んでいますが、これはうまくいきませんでした:

while($raw_materials){
    $ins_ingredients = $con->prepare(
        'INSERT INTO recipes_ingredients (
            recipe_id, raw_material_id, amount
        ) VALUES (
            :last_id, :material, :amount
        )'
    );
    $ins_ingredients->bindValues(':last_id',$last_id);
    $ins_ingredients->bindValues(':material',$ingredient);
    $ins_ingredients->bindValues(':amount',$oz);
    $ins_ingredients->execute();
}
4

2 に答える 2

2

これをチェックしてください:

$values = array_map(null, $_POST['oz'], $_POST['ingredient']);  // You can add other arrays after this
foreach ($values as $value)
{
    list($oz, $ingredient) = $value;
    // Insert data in DB
}
于 2012-08-24T07:06:35.393 に答える
1

1つのグループのclフィールドとcomponentフィールドの番号は同じであるため、foreachループの代わりにforループを使用する必要があります。

for($x=0, $x<count($_POST['cl']); $x++) {
    // now you can use $_POST['cl'][$x] and $_POST['ingredients'][$x]
}
于 2012-08-23T23:11:29.423 に答える