2017-02-12 3 views
0

私は、選択肢ごとに指定された数(1から6の範囲)に従って、最終ステップで入力フィールドに入力するコードを持っています。ユーザは最大で4つの選択肢を作ることができ、24の入力フィールドまたは4つのフォームをもたらす可能性があります。生成されるフォームの数がランダムな複数のフォームをPHPページに提出するにはどうすればよいですか?

これは、すべての選択肢が最大6つの入力フィールド、つまり4つの異なるフォームを持つことを意味します。

これらのフォームをPHPページに提出して、入力をソートしてそれに応じてmySQlデータベースに挿入したいとします。さて、私は明らかにPOSTを使ってこれらのフォームを提出することはできません。

これはAJAXでなければなりません(それは私の考えです)。問題は、フォームのランダムなシリアル化です。ユーザーは入力するフォームを4つ(またはそれ以下)にすることができるため、AJAXがページに含まれるフォームの数を把握し、1つずつ送信するためのスクリプトを生成するにはどうすればよいですか?

<?php 
if(isset($_SESSION["products"]) && count($_SESSION["products"])>0){ //Count total number of products in cart 
$total   = 0; 
$count   =1; 
$member_count =1; 
$list_tax  = ''; 
$cart_box  = '<ul class="view-cart">'; 

foreach($_SESSION["products"] as $product){ //Print each item, quantity and price. 
    $event_name = $product["event_name"]; 
    $event_price = $product["event_price"]; 
    $event_code = $product["event_code"]; 
    $total_members=$product["total_members"]; 
    $item_price  = sprintf("%01.2f",($event_price)); // price x qty = total item price 

    $cart_box  .="<form name=\"form$count\" action=\"pay.php\" method=\"POST\" id=\"$event_code\">"; //Generate one form per product 
    $cart_box  .= "<li> $event_code &ndash; $event_name <span> $currency $item_price </span></li>"; 

    $total  = ($total+$event_price); //Multiply item quantity * price 
for($i=0;$i<$total_members-1;$i++){ 

    $cart_box .="<input name=\"member$member_count\" type=\"text\"></input> //Input fields per form 




    <br/><br/>"; 
    $member_count++; 
} 
$cart_box  .="</form>"; 
$count++; 


} 


$grand_total = $total; //grand total 




$cart_box .= "<li class=\"view-cart-total\">Payable Amount : $currency ".sprintf("%01.2f", $grand_total)."</li>"; 
if(isset($_SESSION['admin'])){ 

    $cart_box .="<button class=\"w3-btn w3-red w3-right\" type=\"submit\" onclick=\"submitHere()\" >Pay</button> //Pay only if user logged in 
    <script>function submitHere(){ 

     document.forms['cl_01'].submit(); 
    };</script>" 


    ; 




} 
else{ 
     $cart_box .="Login"; 

} 
$cart_box .= "</ul>"; 

echo $cart_box; 
}else{ 
echo "Your Cart is empty"; 
} 
?> 

TL; DR:ランダムPHPページに送信されなければならない6つの入力フィールドの最大値を含む各フォームと4の最大点で最大フォームを生成するカートページ。私たちは一度に生成されるフォームの数を知る方法がありません。

A sample output of the code

答えて

0

まずあなたが個別にフォームを識別子に持っています。このようにform_{product_name}_{category_name}のように、フォームと入力タイプを指定することができます。

第2に、PHPフォームハンドラは各リクエストで複数のフォームを処理できません。

だから、あなたのような私が実際にTBH、隠し入力フィールドを避けたかった、非表示の入力タイプフィールドのi.gで<input type="hidden" name="action" value="{value_for_form_idenfier}">

+0

を各フォームを識別し、そのようなコードをハックする必要があります。これを行うためのよりクリーンな方法がありますか? –

関連する問題