2013-12-18 7 views
4

$_SESSION을 사용하여 웹 저장소의 양식을 동적으로 만듭니다. 이 양식은 고객이 원하는 제품에 대한 사용자 정의 정보를 보유합니다.하나의 버튼으로 여러 양식 제출

페이지 1

고객이 양식을 채우고이 같은 같습니다 :

<form action="page2" method="post"> 
<input type="text" name="size"> 
<input type="text" name="color"> 
<input type="submit" name="submit" value="Review Order"> 
</form> 

페이지 2

고객 리뷰 세부 사항을 주문하고 추가 할 수있는 옵션을 가지고이 레이아웃입니다 더 많은 제품보기 고객은 page1로 돌아가서 다른 주문을 주문합니다. 모든 고객의 주문은 페이지 2의 해당 양식에 표시됩니다.

은 다음과 같습니다 : 내가 원하는 것은 페이팔 쇼핑 카트에 ALL 명령을 추가합니다 하나 개의 버튼이

Size: 1 
Color: blue 
Click Here To Checkout 

Size: 2 
Color:green 
Click Here To Checkout 

Size:3 
color:red 
Click Here To Checkout 

. 물론 Click Here To Checkout을 클릭하면 모든 주문을 개별적으로 추가 할 수 있지만 여러 제품을 추가하려면 큰 루프를 거쳐야합니다.

가능한 한 많은 제품을 추가하고 모든 주문을 장바구니에 추가하는 버튼 하나를 클릭하길 원합니다. 그래서

<?php 

if(isset($_POST['submit'])) : 

$test = array(
    'size' => $_POST['size'], 
    'color' => $_POST['color'], 
    'submit' => $_POST['submit'] 
); 

$_SESSION['testing'][] = $test; 

endif; 


if(isset($_SESSION['testing'])) : 

foreach($_SESSION['testing'] as $sav) { 

?> 

<form action="paypal.com/..." method="post"> 
<input type="text" name="size" value="<?php echo $sav['size']; ?>"> 
<input type="text" name="color" value="<?php echo $sav['color']; ?>"> 
<input type="submit" name="submit" value="Click Here to Checkout"> 
</form> 

<?php } endif; ?> 

: 여기

<script> $(document).ready(function(){ $('#clickAll').on('click', function() { $('input[type="submit"]').trigger('click'); }); }); </script> <form action="" method="post"> <input type="text" name="name"> <input type="submit" name="submit" value="submit"> </form> <form action="" method="post"> <input type="text" name="name"> <input type="submit" name="submit" value="submit"> </form> <form action="" method="post"> <input type="text" name="name"> <input type="submit" name="submit" value="submit"> </form> <button id="clickAll">Submit All</button> 

를 사용하여 동적 양식을 생성하는 PHP 스크립트 $_SESSION입니다 :

내가 시도했지만 분명 작동하지 않은 것입니다 질문은, 어떻게 하나의 버튼으로 모든 양식을 제출할 수 있습니까? 여기

+0

각 양식마다 다른 타겟이있는 경우에만. 또한 매우 가난한 연습을 호출하여 name = submit을 호출합니다. 코드에는 많은 제출 버튼이 있지만 양식은 하나뿐입니다. 그게 당신이 묻는 것처럼 보이지 않는 것 – mplungjan

+0

[페이팔의 여러 항목] (http://stackoverflow.com/questions/15262830/multiple-items-in-paypal) – mplungjan

+0

내가 복사 한 내용을 복사하여 붙여 넣은 이유는 무엇입니까? 당신은 하나의 형식을 보았습니다. 모든 입력을 넣고 하나의 양식에 단추를 제출하고 하나의 단추로 모든 단추를 클릭했지만 그 중 하나도 작동하지 않았습니다. –

답변

0

는 작업 jsFiddle입니다 : http://jsfiddle.net/SqF6Z/3/

는 기본적으로, 그 class에 제출하는 각 formtrigger()class를 추가합니다. 그래서 같이 :

HTML (예를 들어 전용) :

<form action="http://www.google.com" method="get" class="myForms" id="1stform"> 
    <input type="text" value="1st Form" name="q1" /> 
</form> 
<form action="http://www.google.com" method="get" class="myForms" id="2ndform"> 
    <input type="text" value="2nd Form" name="q2" /> 
</form> 
<form action="http://www.google.com" method="get" class="myForms" id="3rdform"> 
    <input type="text" value="3rd Form" name="q3" /> 
</form> 
<input type="button" id="clickMe" value="Submit ALL" /> 

jQuery를 :

$('.myForms').submit(function() { 
    console.log(""); 
    return true; 
}) 

$("#clickMe").click(function() { 
    $(".myForms").trigger('submit'); // should show 3 alerts (one for each form submission) 
}); 
+1

첫 번째 제출은 두 번째 amd에 의해 중단됩니다. 경고를 제거하면 스크립트가 실패합니다. – mplungjan

+0

@FastTrack은 경고없이이를 구현할 수있는 방법이 있습니까? –

+0

@JosanIracheta는 단지'alert'를'console.log ("");'호출로 대체합니다. 내 업데이트 된 답변보기 – FastTrack

2

당신은 $ 아약스와 함께 할 것을 시도 적이 있습니까? Onsucces 함수에서 foreach를 추가하거나 다른 양식을 호출 할 수 있습니다.또 다른 방법은 오른쪽을 가리키는 배열 한 형태에 대한 모든 변경은 "추상적 인"형태 :

<form action="" method="post"> 
    <input type="text" name="name[]"> 
    <input type="text" name="example[]"> 

    <input type="text" name="name[]"> 
    <input type="text" name="example[]"> 

    <input type="text" name="name[]"> 
    <input type="text" name="example[]"> 

    <button id="clickAll">Submit All</button> 
</form> 

과 PHP의 :

foreach ($_POST['name'] as $key => $value) { 
    $_POST['name'][$key]; // make something with it 
    $_POST['example'][$key]; // it will get the same index $key 
} 
0

FWIW, 나는 iframe이를 생성하여이 작업을 수행 두 번째 형태의 대상은 다음이

//create the iframe 
$('<iframe id="phantom" name="phantom">').appendTo('#yourContainer'); 

같이 모두 제출 생성하는 듀얼 같이 제출

function dualSubmit() { 
    document.secondForm.target = 'phantom'; 
    document.secondForm.submit(); 
    document.firstForm.submit(); 
} 

작품!

0

첫 번째 루프는 모든 양식 ID를 가져 와서 아약스로 보냅니다. success.also 콘솔에 로그인하는 것을 잊지 말아 후 다음 아약스 호출을 중지

<a class="btn" id="btn" onclick="submitAll();" href="">Save &amp; Close</a> 

위해

에 제출하기위한

<script name="ajax fonksiyonları" type="text/javascript"> 
      function validate(form){ 
      //get form id 
      var formID = form.id; 
      var formDetails = $('#'+formID); 
       $.ajax({ 
        type: "POST", 
        url: 'ajax.php', 
        data: formDetails.serialize(), 
        success: function (data) { 
         // log result 
         console.log(data); 
         //for closing popup 
          location.reload(); 
         window.close() 
        }, 
        error: function(jqXHR, text, error){ 
        // Displaying if there are any errors 
        console.log(error); 
        } 
       }); 
      return false; 
     } 
      //this function will create loop for all forms in page 
      function submitAll(){ 
        for(var i=0, n=document.forms.length; i<n; i++){ 
         validate(document.forms[i]); 
        } 
       } 

만들기 버튼을 클릭합니다.

이 코드는 모든 아약스가 완료된 후 팝업 및 닫는 팝업에서 작동합니다.

관련 문제