【问题标题】:How to retain dropdown selected option after submit / page refresh提交/页面刷新后如何保留下拉选择的选项
【发布时间】:2017-03-23 07:36:56
【问题描述】:

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

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

<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']&lt;?php echo $row1['test_email'];?&gt;-&lt;?php echo $row1['test_id'];?&gt;
  • 因为我在$_POST['test_email'] 上使用explode
  • 我再发一篇帖子(插入数据库)$test_temp = trim(mysqli_real_escape_string($db, $_POST['test_email'])); 以在数据库中包含我的下拉值(整个字符串)。
  • 我在表单&lt;input id="test_temp" type="hidden" name="test_temp" value="&lt;?php echo $row["test_temp"]; ?&gt;"&gt; 中添加了隐藏输入
  • 并将选择选项行更改为&lt;option value="&lt;?php echo $row1['test_email'] . '-' . $row1['test_id']; ?&gt;"&lt;?php if($row1['test_email'] . '-' . $row1['test_id'] == $row['test_temp']) echo ' selected="selected"' ; ?&gt;&gt;&lt;?php echo $row1['test_id'];?&gt;&lt;/option&gt;

也许这可能更简单,但它就像一个魅力。

@roberto06:感谢您的指导。

【问题讨论】:

  • 为什么你不在选项中使用 selected="selected" ?
  • 谢谢。我使用它,最后它工作了。 :)

标签: php html explode dropdown selected


【解决方案1】:

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

您可能还想将&lt;?php echo $row1['test_email'];?&gt;-&lt;?php echo $row1['test_id'];?&gt; 连接到&lt;?php echo $row1['test_email'] . '-' . $row1['test_id']; ?&gt;,但这取决于您。

这是一个解决方案(我假设 $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>

【讨论】:

  • 现在,根据您的建议,我有“注意:未定义的索引:C:\xampp 中的 test_email ...”。我需要isset POST 吗?请问在哪里?或者,问题是因为我在 test.php 的 test_email 上使用了 explode ?无论如何谢谢 roberto06
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多