如何在提交/页面刷新后保留下拉列表选项

时间:2016-11-09 13:13:17

标签: php html explode dropdown selected

我希望在提交/刷新页面后选择下拉列表选项。我搜索其他示例,但没有人在我的代码上工作。

如何使用此代码提交/刷新后保留所选值?

<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>

以这种方式解决

  • 因为我无法通过$_POST['test_email']
  • 传递<?php echo $row1['test_email'];?>-<?php echo $row1['test_id'];?>
  • 因为我在explode
  • 上使用$_POST['test_email']
  • 我再发一个帖子(在db中插入)$test_temp = trim(mysqli_real_escape_string($db, $_POST['test_email']));以在db中获得我的下拉值(整个字符串)。
  • 我在表单<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:谢谢你的指导。

1 个答案:

答案 0 :(得分:0)

您需要在与selected="selected"值匹配的选项中添加$_POST属性。

您可能还想将<?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>