【问题标题】:HTML Select Form Keep Drop Down Values PHPHTML 选择表单保留下拉值 PHP
【发布时间】:2012-04-10 02:23:48
【问题描述】:

假设我有一个表单,其中包含一个由存储在我的数据库中的值填充的下拉列表:

<form action="" method="POST">
    <select name="item_select">
    <?php 
    $query = "SELECT * FROM my_table ORDER BY name";
    $result = mysql_query($query);
    while ($row = mysql_fetch_object($result)) { 
    ?>
        <option value=<?php echo $row->id; ?> > <?php echo $row->name; ?></option>
        <?php }// end while?>
    </select>
    <br /><br />
    <input name="action_1" type="submit" value="Action 1" />
    <input name="action_2" type="submit" value="Action 2" />
</form> 

这一切都很好,但我有一个小的审美问题,我想看看我是否可以解决。具体地说,每次我提交表单时,下拉列表都会选择列表中的第一项,无论我选择哪一项。例如。

List:
Item1 (selected)
Item2

我选择了Item2并提交了表单,页面提交后仍然是

List:
Item1 (selected)
Item2

有没有办法让下拉菜单“记住”选择了哪个项目?比如Item2的表单提交后想要的效果应该是。

List:
Item1
Item2 (selected)

【问题讨论】:

    标签: php html forms


    【解决方案1】:

    只需将提交的值与 for 循环中的当前值进行比较:

    <option value="<?php echo $row->id ?>" <?php echo $row->id == $_POST['item_select'] ? 'selected' : '' ?> ><?php echo $row->name ?></option>
    

    【讨论】:

    • 很好,正是我想要的。再次感谢!
    【解决方案2】:

    就我个人而言,我有一个功能可以为您完成所有这些操作,用于选择、复选框和单选输入。但前提是您需要多次执行此操作。例如:

    function checker($type, $positive, $value) {
        if ($type == 'radio') {
            if ($positive == $value) {
                $bool = 'CHECKED';
            }
        }
    
        if ($type == 'checkbox') {
            if ($positive == $value) {
                $bool = 'CHECKED';
            }
        }
    
        if ($type == 'select') {
            if ($positive == $value) {
                $bool = 'SELECTED';
            }
        }
    
        return $bool;
    }
    

    如下使用:

    <select name="item_select">
        <?php 
        $query = "SELECT * FROM my_table ORDER BY name";
        $result = mysql_query($query);
        while ($row = mysql_fetch_object($result)) { 
        ?>
            <option value=<?php echo $row->id; ?> <?=checker('select', $row->id, $_POST['item_select'])?>> <?php echo $row->name; ?></option>
            <?php }// end while?>
        </select>
    

    如果你只需要这样做一次,那么这有点过头了,但你应该能够接受这个原则并将其应用到你的代码中。

    【讨论】:

      【解决方案3】:

      尝试以下方法:

      <option value="<?php echo $row->id ?>" <?php echo $row->id == $_POST['item_select'] ? "selected='selected'" : "" ?> ><?php echo $row->name ?></option>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-02-10
        • 2023-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多