1

私はphp/mysqlに精通していないので、すみません。在庫用のhtmlフォームがあります。SQL データベースを更新するための一連のフィールドがあります。それらは item_name、item_cost、item_quantity です。ユーザーが追加のアイテム/行を動的に追加できるjqueryボタンがあります。

質問: ユーザーが追加したアイテムの数に関係なく、php をループさせ、それらを mysql データベースに入れるにはどうすればよいですか?

お時間をいただきありがとうございます。

4

2 に答える 2

4

同じ名前の複数のフォーム入力があり、その名前が 2 つの角括弧で終わる[]場合、PHP がフォームから入力するときに、それらの値は配列に変換されます$_POST

したがって、jQuery ボタンは、次のような名前のフィールドを持つ行を挿入する必要があります。

<input type="text" name="item_name[]" value="" />
<input type="text" name="item_cost[]" value="" />
<input type="text" name="item_quantity[]" value="" />

フォーム送信を受け取る PHP コードでは、存在するすべての行を次のように処理できます。

//I used `item_name` as the loop termination condition, 
//but any of the 3 keys would have worked
for ($i = 0; $i < count($_POST['item_name']); $i++) {
    $item_name = $_POST['item_name'][$i];
    $item_cost = $_POST['item_cost'][$i];
    $item_quantity = $_POST['item_quantity'][$i];

    //here, inside the loop, run your database query using the 3 values above    
}
于 2012-08-21T22:07:48.007 に答える
0

もう1つの(難しい)方法は、ユーザーが送信したいアイテムの数を値とする非表示の入力ボックスを作成することです。jqueryの「追加ボタン」がクリックされるたびに、非表示の入力の値も更新されます(value ++)。 jqueryで作成している間に「name_id」などの他の入力名を実行する必要があるため、サーバー側で取得できます... .

于 2012-08-21T22:14:02.730 に答える