2014-04-02 35 views
0

爲什麼我的代碼總是返回「請填寫所有字段」?PHP,HTML表格傳遞

<?php 
if($_POST['submitted']=='') { 
    echo ' 
     <form action="" method="POST"> 
      Total Trip Time: <input type="text" name="EndTime"><br> 
      Miles Per Hour: <input type="text" name="Distance"><br> 
          <input type="hidden" name="submitted" value="1"> 
          <input type="submit" value="Submit"> 
     </form> 
    '; 
} else if ($_POST['EndTime'] == '') { 
    echo ' 
     <H1>Please fill out all fields</H1> 
     <form action="" method="POST"> 
      Total Trip Time: <input type="text" name="EndTime"><br> 
      Miles Per Hour: <input type="text" name="Distance"><br> 
          <input type="hidden" name="submitted" value="1"> 
          <input type="submit" value="Submit"> 
     </form> 
    '; 
} else if ($_POST['Distance'] == '') { 
    echo ' 
     <H1 style="color: red;">Please fill out all fields</H1> 
     <form action="" method="POST"> 
      Total Trip Time: <input type="text" name="EndTime"><br> 
      Miles Per Hour: <input type="text" name="Distance"><br> 
          <input type="hidden" name="submitted" value="1"> 
          <input type="submit" value="Submit"> 
     </form> 
    '; 

} else { 
    echo "<table border='1'>"; 
    for ($StartTime = 1; $StartTime <= $_POST['EndTime']; $StartTime++) { 
     echo"<tr><td>".$StartTime."</td><td>".$StartTime*$_POST['Distance']."</td></tr>"; 
    } 
} 
?> 
+0

爲什麼不嘗試在輸入字段中添加'required'以確保填充?不是你正在尋找的答案,但這只是添加檢查 –

+1

你知道哪些條件觸發消息?消息是紅色的嗎? – Floris

+1

你想要什麼結果?爲什麼你把所有的$ _POST都用空值? –

回答

1

表單的下面簡化工作(我 - 看http://www.floris.us/SO/form.php):

<?php 
if(isset($_POST['submitted']) && $_POST['EndTime']!='' && $_POST['Distance']!='') { 
    echo "<table border='1'>"; 
     for ($StartTime = 1; $StartTime <= $_POST['EndTime']; $StartTime++) { 
      echo"<tr><td>".$StartTime."</td><td>".$StartTime*$_POST['Distance']."</td></tr>"; 
     } 
    } 
    else { 
     if(isset($_POST['submitted'])) { 
      echo "You did not fill out all fields!"; 
     } 
     echo ' 
      <form action="" method="POST"> 
       Total Trip Time: <input type="text" name="EndTime"><br> 
       Miles Per Hour: <input type="text" name="Distance"><br> 
       <input type="hidden" name="submitted" value="1"> 
       <input type="submit" value="Submit"> 
      </form>     
      '; 
    } 
?> 
+0

謝謝你,但我將如何使用這種相同的方法做缺失字段的糾錯。 –

+0

@Ruthless我已經更新了代碼 - 現在,如果您的第一個條件失敗,但設置了'$ _POST ['submitted']',您知道其他字段沒有填寫 - 所以您添加了錯誤消息。顯然你可以從這裏適應。 – Floris

0

嘗試這樣的。驗證使用jQuery或JavaScript

<?php 
if(isset($_POST['submitted']) && isset($_POST['Distance']) && isset($_POST['EndTime'])) 
{ 
echo "<table border='1'>"; 
     for ($StartTime = 1; $StartTime <= $_POST['EndTime']; $StartTime++) { 
      echo"<tr><td>".$StartTime."</td><td>".$StartTime*$_POST['Distance']."</td></tr>"; 
     } 
     echo '</table>'; 
}else{ 
    echo ' 
      <div id="err" style="color:red;"></div> 
      <form action="" method="POST" onsubmit="return validate()"> 
       Total Trip Time: <input type="text" id="EndTime" name="EndTime"><br> 
       Miles Per Hour: <input type="text" id="Distance" name="Distance"><br> 
           <input type="hidden" id="submitted" name="submitted" value="1"> 
           <input type="submit" value="Submit"> 
      </form>     
      '; 

} 
?> 
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script> 
<script type="text/javascript"> 
function validate() 
{ 
    endtime = $("#EndTime").val();     
    distance = $("#Distance").val(); 
    submitted = $("#submitted").val(); 
    if(endtime == "" || distance == "" || submitted == "") 
    { 
     $("#err").html("Please enter all fields"); 
     return false; 
    } else { 
     $("#err").html(""); 
    } 
    return true; 
} 

</script> 
+0

感謝您的建議,但我們不允許使用javascript o html5。 –

1

嘗試使用$_REQUEST而不是使用$_POST。如果發生任何錯誤,請在這裏發帖告訴我錯誤是什麼。

<?php 
    if(isset($_REQUEST['submitted']) == "" || isset($_REQUEST['EndTime']=='') || isset($_REQUEST['Distance'] =='')) { 
     echo ' 
       <form action="" method="POST"> 
        Total Trip Time: <input type="text" name="EndTime"><br> 
        Miles Per Hour: <input type="text" name="Distance"><br> 
        <input type="hidden" name="submitted" value="1"> 
        <input type="submit" value="Submit"> 
       </form>     
       '; 
     } 
     else { 
    echo "<table border='1'>"; 
      for ($StartTime = 1; $StartTime <= $_POST['EndTime']; $StartTime++) { 
       echo"<tr><td>".$StartTime."</td><td>".$StartTime*$_POST['Distance']."</td></tr>"; 
      } 

     } 
    ?>