2012-06-30 43 views
0

當我因爲PHP中的錯誤而返回給用戶時,我可以給文本框一個類似於value = "<?php if(isset($_POST['abc'])){echo $_POST['abc'];}之類的值。我該怎麼做與<select>組合框的等價物?如何在頁面重置時設置組合框值?

+1

我不知道這將無法在PHP中做。而不是PHP我們可以使用jQuery餅乾來解決這個問題 – MMK

回答

2

這取決於你的意思是什麼refreshed

如果您的意思是在沒有任何發佈的情況下對頁面進行文字刷新/重新加載,則可以使用javascript存儲更改時的值,並在刷新/加載頁面時加載該值。您的存儲選項根據訪客計算機上的cookie和本地存儲到使用ajax的服務器端存儲而有所不同。

如果你談論的是,當你在稍後的時間加載相同頁面使用以前保存/發佈的價值觀,這是一個不同的故事,雖然AJAX方法是有效的,以及有(可能沒有必要雖然)。

編輯:根據您的編輯,你需要添加selected="selected"到以前選擇的選項。

在建立你選擇的選項(假設一個循環)循環

所以,你這樣做:

foreach($options as $key => $value) // the loop, if any... 
{ 
    echo "<li value='{$key}'"; 
    if ($key == $_POST['def']) 
    { 
    echo ' selected="selected"'; 
    } 
    echo ">{$value}</li>" 
} 
+0

我澄清了我的問題。 – fdsa

1

這是一個示例:

<?php 
    $cbo_sel = 'SELECTED="SELECTED"'; //to make an item selected, append this attribute to that <option> element 

    $post_success = false; //becomes true only when the data submitted is processed successfully 

    $name = ''; 
    $email = ''; 
    $grade = ''; 

    $user_msg = ''; //holds the messages to the user 

    if($_SERVER['REQUEST_METHOD']=='POST') 
    { 
     //assigning the values 
     $name = isset($_POST['name']) ? trim($_POST['name']) : ''; 
     $email = isset($_POST['email']) ? trim($_POST['email']) : ''; 
     $grade = isset($_POST['grade']) ? trim($_POST['grade']) : ''; 

     //do validation here 
     if($name == '') // && any_regex_if_needed 
      $user_msg = "Where is your name ?"; 
     else if($email == '') 
      $user_msg = "How am I gonna contact you ?"; 
     else if($grade == '') 
      $user_msg = "Oh! Don't hide your grade from me !"; 
     else 
     { 
      //everything is okay.. now do your things here... like inserting this to database or calculating or mailing, etc... 
      //... 
      //... 

      $user_msg = 'Success !'; 
      $post_success = true; //success 
     } 
    } 
?> 
<!DOCTYPE html> 
<html> 
<head><title>Testing..</title></head> 
<body> 

    <div><?php echo $user_msg; ?></div> 

    <form method="POST"> 
     Name: 
      <input type="text" name="name" value="<?php echo (!$post_success)?$name:''; ?>" /> <br /> 
     Email: 
      <input type="text" name="email" value="<?php echo (!$post_success)?$email:''; ?>" /> <br /> 
     Grade: 
      <select name="grade"> 
       <option value="A" <?php echo ($grade=='A' && !$post_success)?$cbo_sel:''; ?>>A</option> <!-- if grade='A' and if the data submitted was not processed(because of failed validation), then display the value --> 
       <option value="B" <?php echo ($grade=='B' && !$post_success)?$cbo_sel:''; ?>>B</option> 
       <option value="C" <?php echo ($grade=='C' && !$post_success)?$cbo_sel:''; ?>>C</option> 
       <option value="D" <?php echo ($grade=='D' && !$post_success)?$cbo_sel:''; ?>>D</option> 
      </select> 

      <input type="submit" name="submit" value="Submit" /> 
    </form> 
</body> 
</html> 

在這裏,我硬編碼的選項。因此,如果有多個項目的冗長下拉,請使用循環並使用if語句檢查選項。

也許這可以改善。我歡迎所有的建議。 :)