2016-11-09 151 views
0

我想在提交/刷新頁面後選擇下拉選定選項。我尋找其他的例子,但沒有人在我的代碼上工作。如何在提交/頁面刷新後保留下拉選擇選項

如何在使用此代碼提交/刷新後保留選定的值?

<form name="test" action="test.php?id=<?php echo $row["id"]; ?>" method="post"> 
    <select id="test_email" name="test_email">  
     <option value="">...select</option> 
     <?php 
      $sql2 = "SELECT test_id, test_email FROM test WHERE status='Act'"; 
      $res = $db->query($sql2); 

      if ($res->num_rows > 0) { 
       while($row1 = mysqli_fetch_array($res)) { 
     ?> 
     <option value="<?php echo $row1['test_email'];?>-<?php echo $row1['test_id'];?>"><?php echo $row1['test_id'];?></option> 
     <?php 
       } 
      } 
     ?> 
    </select> 

解決這樣

  • 因爲我無法<?php echo $row1['test_email'];?>-<?php echo $row1['test_id'];?>
  • 通過$_POST['test_email']因爲我對$_POST['test_email']
  • 使用explode我讓一個人多崗(單位爲dB的插入)$test_temp = trim(mysqli_real_escape_string($db, $_POST['test_email']));讓我的下拉值(整個字符串)在數據庫中。
  • 我在我的表單中添加了隱藏輸入<input id="test_temp" type="hidden" name="test_temp" value="<?php echo $row["test_temp"]; ?>">
  • 並將選擇選項行更改爲<option value="<?php echo $row1['test_email'] . '-' . $row1['test_id']; ?>"<?php if($row1['test_email'] . '-' . $row1['test_id'] == $row['test_temp']) echo ' selected="selected"' ; ?>><?php echo $row1['test_id'];?></option>

也許這可能更簡單,但它像一個魅力。

@ roberto06:感謝您的指導。

+0

=在選項「選擇」? – Rohit

+0

謝謝。我使用它,並最終它的工作。 :) – Falcon

回答

0

您需要在與您的$_POST值匹配的選項上添加selected="selected"屬性。

您可能還想連接<?php echo $row1['test_email'];?>-<?php echo $row1['test_id'];?><?php echo $row1['test_email'] . '-' . $row1['test_id']; ?>,但這取決於您。

這裏有一個解決方案(我認爲$POST['test_email']必須等於$row1['test_email'] . '-' . $row1['test_id']爲了條件匹配)。我使用的是shorthand if...else在這裏,但你也可以使用一個經典if:爲什麼你不使用選擇

<form name="test" action="test.php?id=<?php echo $row["id"]; ?>" method="post"> 
    <select id="test_email" name="test_email">  
     <option value="">...select</option> 
       <?php 
        $sql2 = "SELECT test_id, test_email FROM test WHERE status='Act'"; 
        $res = $db->query($sql2); 
        if ($res->num_rows > 0) { 
        while($row1 = mysqli_fetch_array($res)) { 
        ?> 
     <option value="<?php echo $row1['test_email'] . '-' . $row1['test_id']; ?>"<?php echo (isset($_POST['test_email']) && $row1['test_email'] . '-' . $row1['test_id'] == $_POST['test_email']) ? ' selected="selected"' : ''; ?>><?php echo $row1['test_id'];?></option> 
        <?php 
         } 
         } 
        ?> 
    </select> 
</form> 
+0

現在,您的建議我有「注意:未定義的索引:test_email在C:\ xampp ...」。我需要'isset' POST和哪裏?或者,問題是我在test.php的test_email上使用explode?無論如何roberto06 – Falcon

+0

謝謝,我解決了問題。你幫了我很多。 – Falcon