2016-06-01 5 views
0

10 개의 다른 속성에 대해 10 개의 다른 페이지가있는 웹 사이트를 개발 중입니다. 각 페이지에는 약속을 설정하는 양식과 다른 작업을위한 양식이 있습니다. 각 양식을 어떻게 처리합니까? 지금은 각 양식에 대한 처리 페이지가 있습니다. 따라서 총 20 개의 서로 다른 처리 페이지가 있습니다. 모든 변수, 이름 및 ID에 대해 2..3 ... 4..etc를 추가합니다. 각 양식. 이것이 올바른 방법인가?PHP로 여러 폼을 처리하는 방법

 <form role="form" id="apptform2" name="apptform2" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="POST"> 
      <div class="form-group cushion"> 
       <label for="apptName2">Full Name*</label> 
       <input type="text" name="apptName2" class="form-control" id="apptName2" placeholder="Last, First"> 
       <?php if (isset($apptErrors2['apptNamePgTwo1'])) { echo '<div class = "pink-text"/><p>', $apptErrors2['apptNamePgTwo1'] , '</p></div>'; } ?> 
       <?php if (isset($apptErrors2['apptNamePgTwo2'])) { echo '<div class = "pink-text"/><p>', $apptErrors2['apptNamePgTwo2'] , '</p></div>'; } ?> 
       <?php if (isset($apptErrors2['apptNameLengthPgTwo'])) { echo '<div class = "pink-text"/><p>', $apptErrors2['apptNameLengthPgTwo'] , '</p></div>'; } ?> 
      </div> 
      <div class="form-group cushion"> 
       <label for="apptEmail2">Email address*</label> 
       <input type="email" name="apptEmail2" class="form-control" id="apptEmail2" placeholder="Email"> 
       <?php if (isset($apptErrors2['apptEmailPgTwo1'])) { echo '<div class = "pink-text"/><p>', $apptErrors2['apptEmailPgTwo1'] , '</p></div>'; } ?> 
       <?php if (isset($apptErrors2['apptEmailPgTwo2'])) { echo '<div class = "pink-text"/><p>', $apptErrors2['apptEmailPgTwo2'] , '</p></div>'; } ?> 
      </div> 
      <div class="form-group cushion"> 
       <label for="apptPhone2">Phone*</label> 
       <input type="text" name="apptPhone2" class="form-control" id="apptPhone2" placeholder="Phone"> 
       <?php if (isset($apptErrors2['apptPhonePgTwo2'])) { echo '<div class = "pink-text"/><p>', $apptErrors2['apptPhonePgTwo2'] , '</p></div>'; } ?> 
      </div> 

      <div class="form-group cushion"> 
       <label for="apptMessage2">Message:</label> 
       <textarea class="form-control" name="apptMessage2" rows="5" id="apptMessage2"></textarea> 
      </div> 

      <div class="cushion text-center"> 
       <button type="submit" name="appt-form-2" class="btn btn-danger btn-md">Request</button> 
      </div> 
     </form> 
+2

20 가지가 아닌 2 가지 양식 처리 스크립트가 필요합니다. 질문에 두 개의 스크립트를 추가하면 서로 다른 변수 이름을 사용하여 중복되었는지 확인하는 것이 도움이 될 수 있습니다. – JimL

답변

0

는 당신은 두 가지 형태가 필요하고, 각 양식에서, 당신은 숨겨진을 추가하고 읽기 전용으로 특정 형태의 ID를 포함하는 입력 양식이 제출됩니다 때, 당신의 처리 페이지가 무엇인지에 알 수 있도록 데이터로 처리하십시오. 모든 처리 페이지는 제출 된 양식을 알기 위해 "form_id"필드의 내용을 살펴 보는 것입니다.

예 :

<form action="processingpage.php"> 
<input type="text" name="form_id" value="AppointmentForm" readonly/> 
... 
</form> 

<form action="processingpage.php"> 
<input type="text" name="form_id" value="SomethingElseForm" readonly/> 
... 
</form> 

기술적으로, 당신은 숨겨진는 "form_id"입력 페지 단지 두 개의 서로 다른 처리 페이지를 사용하지만, 당신이 절대적으로 하나 개의 처리를 사용하는 경우 제가 위에서 제공되는 예는 수 페이지.

0

내가 잘못 이해하지 못했다면, 현재 페이지에 머무르면서 각각을 개별적으로 처리하려고합니다. 그런 다음이 개 대안 내가 말할 수있다 : 페이지 당

  1. 하나의 양식이 당신에게 깨끗한 디자인을 줄 것이며, 아마 더 직관적으로 이해할 수있는 사용자가 될 것입니다.

  2. 각 양식을 비동기식으로 처리합니다. 대상 iframe (How do you post to an iframe?)을 사용하거나 JavaScript 함수를 사용하여이를 수행 할 수 있습니다.

JavaScript를 사용하면 더 많은 작업을 수행 할 수 있지만 더 많은 작업이 필요합니다. 다음과 같이 할 수 있습니다.

$("#form-id").submit(function(e){ 
    e.preventDefault(); 
    var form = {}; 
    form.field1 = $("#field1").val(); 
    form.field2 = $("#field2").val(); 
    var url = "your-submit-url"; 

    $.post(url, form) 
    .done(function(data) { 
     // do some success action 
    }) 
    .fail(function(){ 
     // do some failure action 
    }) 
    .always(function(){ 
     // do some action (optional) at the end 
    }); 
}); 
+0

'var form = $ (this); $ .post (form.attr ('action'), form, serialize())' – Steve

+0

명시 적으로 선호하는 편이 낫다고해도 스티브가 말하는 것은 수동으로 양식을 채우지 않고 일부 줄을 저장하는 멋진 개선입니다. – Ender

0

감사합니다. 이것이 결국 내가 그 일을 끝낸 방법입니다. 각 양식에 숨겨진 입력 형식을 추가합니다.

<input type="hidden" value="Listing One" name="apptType"> 

하나의 처리 페이지 만 사용하고 있습니다. 처리 페이지에서 어떤 양식을 작성했는지 식별하고 정보를 이메일로 보낼 수 있도록 추가했습니다.

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

      if ($_POST['apptType']== "Listing One"): 

      $messagePt = "Some message here:"; 
      $headerPT ="location: some page here" ; 

      endif; 

      (repeat above code for each value "Listing One" thru "Listing Ten") 

     end if; 
관련 문제