2016-11-09 109 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