2012-04-27 47 views
0

在我的註冊表格中,如果用戶單擊提交時需要顯示驗證消息,則所有框中的全部文本消失,這意味着它們必須重新開始!如果出現錯誤信息,數據將被清除

我需要添加哪些PHP代碼才能保留數據?

 Username<span class="required">*</span> 
     <input name="user_name" type="text" id="user_name" minlength="5" > 

     Full Name<span class="required">*</span> 
     <input name="full_name" type="text" id="full_name" size="30" 

     Nationality <span class="required">*</span> 
     <select name="nationality" id="select8"> 
      <option value="" selected></option> 
      <option value="Afghanistan">Afghanistan</option> 
      <option value="Albania">Albania</option> 
     </select> 

<p align="center"> 
     <input name="doRegister" type="submit" id="doRegister" value="Register"> 
     </p> 
    EDIT: 

我已經試過這樣:

 <?php 
     $email_field = ($_POST['usr_email']); 
     ?> 
     Email<span class="required">*</span> 
     <input type="text" id="usr_email3" name="usr_email" value="<?php echo 
     $email_field; ?>" /> 

,但它說usr_email沒有定義

+4

您需要了解如何編程,瞭解HTTP的工作原理和PHP語法。 – TJHeuvel 2012-04-27 07:53:12

+0

我已經在這種形式的PHP,這只是一個例子 – user1296762 2012-04-27 07:57:29

+0

你給了提交選項,以便頁面提交的一個片段。如果您遇到錯誤,您需要獲取已從會話中填充的值。 – vvr 2012-04-27 08:03:32

回答

2

如HTTP規範描述,HTTP是無狀態的。這意味着即使用戶通過前一頁進入頁面,服務器也不知道這一點。每個請求都是全新的,所以它不能發送以前的輸出。

您必須閱讀$ _POST發送到表單的值,然後重新發送。例如:

<?php 
    //If the POST parameter has been send, set it to the $username variable. Otherwise make it empty. 
    $username = array_key_exists('username', $_POST) ? $_POST['username'] : ''; 
?> 

<form name='f1' method='POST'> 

<!-- Show username as its value, thus preserving state. --> 
Name: <input type='text' value='<?php echo $username ?>' name='username' /> 
<input type='submit' value='Go' /> 

</form> 

對於select輸入(通常是下拉列表),你需要設置正確的選項選擇屬性。因此:

<?php 
    $gender = array_key_exists('gender', $_POST) ? $_POST['gender'] : 'unknown'; //Default to unknown 
?> 

<form name='f1' method='POST'> 

<select name='gender'> 

    <!-- The $gender will be the value of each option. --> 
    <option <? if($gender == 'unknown') { ?> selected <? } ?> value='unknown'>Unknown</option> 
    <option <? if($gender == 'male') { ?> selected <? } ?> value='male'>Male</option> 
    <option <? if($gender == 'female') { ?> selected <? } ?> value='female'>Female</option> 

</select> 


<input type='submit' value='Go' /> 

</form> 

但是,我仍然建議你買一本適當的書,或閱讀更多教程。在您作爲開發人員感覺更舒適後,您可以探索並找到這些解決方案,就像我們在這裏曾經做過的一樣。

+0

下拉菜單有什麼不同嗎? – user1296762 2012-04-27 08:40:23

+0

對於'select'元素,您需要在正確的元素上設置'selected'屬性。所以你想選擇的應該看起來像:''。 – TJHeuvel 2012-04-27 08:52:11

+0

仍然使用這一行:'$ username = array_key_exists('username',$ _POST)? $ _POST ['username']:'';' – user1296762 2012-04-27 09:13:23

0
<input name="user_name" type="text" id="user_name" minlength="5" value="<?php if(isset($_POST['user_name'])) { echo $_POST['user_name']; } ?>" > 
+0

這將工作,如果你添加值屬性。 – TJHeuvel 2012-04-27 09:19:39

+0

謝謝@TJHeuvel,我錯過了價值屬性...... :-) – 2012-04-27 09:56:04