2012-05-20 56 views
0

我有這個代碼,我驗證每個字段不是空的問題是,當每個字段填充我必須按提交兩次,以便表格提交。表格提交我必須按所有字段都不空時提交兩次

<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。你需要使用一些JavaScript。 Here's a quick tutorial,第一個例子解決你要找的東西。

+0

非常感謝您的快速回答我將檢查您建議的教程:) – Reyko

相關問題