2012-05-20 3 views
0

각 필드가 비어 있지 않음을 확인하는이 코드가 있는데 문제는 모든 필드가 채워지면 해당 필드를 두 번 눌러야한다는 것입니다. 제출할 양식.양식 제출 모든 필드가 비어 있지 않은 경우 submit을 두 번 눌러야합니다.

<table> 
    <form method ="post" <?php 
    if(!empty($_POST['Firstname']) && 
     !empty($_POST['Lastname']) && 
     !empty($_POST['Email']) && 
     !empty($_POST['Comments'])){ 
     echo 'action="messagesent.php"';} 
    else if(isset($_POST['Firstname']) || 
     isset($_POST['Lastname']) || 
     isset($_POST['Email']) || 
     isset($_POST['Comments'])) { 
     echo 'action="contact.php"';}?> > 
     <tr> 
     <td><label>Firstname:</td><td><input name ="Firstname" type ="text" size ="30" <?php if(!empty($_POST['Firstname'])){$Firstname=$_POST['Firstname'];echo "value=$Firstname";} ?> /></td><td><?php if(empty($_POST['Firstname'])){echo "<font color='blue'>*</font>";}?></td> 
     </tr> 

     <tr> 
     <td><label>Lastname:</td><td><input name="Lastname" type ="text" size ="30" <?php if(!empty($_POST['Lastname'])){$Lastname = $_POST['Lastname'];echo "value=$Lastname";}?> /></td><td><?php if(empty($_POST['Lastname'])){echo "<font color='blue'>*</font>";}?></td> 
     </tr> 

     <tr> 
     <td><label>E-mail:</td><td><input name="Email" type ="text" size ="30" <?php if(!empty($_POST['Email'])){$Email = $_POST['Email'];echo "value=$Email";}?> /></td><td><?php if(empty($_POST['Email'])){echo "<font color='blue'>*</font>";}?> </td> 
     </tr> 

     <tr> 
     <th colspan="2"><label>Your Message</th> 
     </tr> 
     <tr> 
     <td colspan="2"><textarea name= "Comments" rows="10" cols="34"><?php $Comments=$_POST['Comments'];if(!empty($_POST['Comments'])){echo "$Comments";} ?> </textarea></td><td><?php if(empty($_POST['Comments'])){echo "<font color='blue'>*</font>";}?> </td> 
     </tr> 
     <tr> 
     <td><input type="submit" value = "SUBMIT"/> </td> 
     </tr> 

    </form> 
</table> 

답변

3

PHP는 페이지의 필드가 채워져 있는지 확인하기를 기대합니다. PHP 작동 방식이 아닙니다. 페이지가 처음 렌더링 될 때 한 번 평가 된 다음 페이지가 다시로드 될 때까지는 아무 것도 다시 수행하지 않습니다. PHP의 $_POST 배열은 페이지의 입력 필드를 참조하지 않습니다. 폼이로드 될 때 페이지가받은 값을 참조합니다. 그래서 무슨 일이 일어나는가?

  1. 양식을 제출하지 않았기 때문에 페이지가 처음으로로드되고 $_POST은 비어 있습니다.
  2. PHP는 이것을보고 ACTION으로 설정하면 같은 페이지로 다시 돌아옵니다.
  3. 양식을 작성하고 제출을 누르십시오.
  4. 페이지가 새로 고침되지만 이번에는 양식을 제출 했으므로 $_POST에 값이 있습니다.
  5. PHP는 $_POST의 값을보고 ACTION을 설정하여 다음 페이지로 이동합니다.
  6. 양식을 다시 작성하고 제출을 누르고 다음 페이지로 전송됩니다.

양식을 제출하기 전에 입력란이 채워지는지 확인하려면 양식을 확인하려면 PHP를 사용할 수 없습니다. 자바 스크립트를 사용해야합니다. Here's a quick tutorial 첫 번째 예제는 찾고자하는 것을 처리합니다.

+0

빠른 답변을 보내 주셔서 감사합니다. 자습서를 확인하십시오 :) – Reyko

관련 문제