首页 文章

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

提问于
浏览
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>

Solved this way

  • 因为我无法用 <?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'])); 在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

    您需要在与 $_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>
    

相关问题