【问题标题】:Print selected attribute on select option with PHP and MySQL使用 PHP 和 MySQL 在选择选项上打印所选属性
【发布时间】:2016-05-09 10:48:39
【问题描述】:

我正在从我的数据库中打印一个选择列表。

这是我的代码的一部分:

<form action="" method="post">
    <div class="form-item">
        <select name="specialties">
        <?php
        $query = "SELECT * FROM specialties";
        $result = mysqli_query($connection, $query);

        echo '<option value="All">' . $filterTitle . '</option>';
        while($row = mysqli_fetch_assoc($result)) {
            $id = $row['id'];
            $title = $row['title_'. $lang];

            if($_POST['specialties'] == $id) {
                $selected = 'selected';
            }

            echo '<option value="' . $id . ' "' . $selected . '>' . $title . '</option>';
        }
        ?>  
        </select>
    </div>

    <div class="form-item">
        <input class="form-submit" type="submit" name="submit" value="<?php echo $filterSubmit; ?>">
    </div>
</form>

在这个表单中,当我选择一些选项时,它会过滤内容。这工作正常,我不需要发布那部分代码。

首先,当我从选择列表中选择某个选项并提交后,它会过滤内容,但选择选项显示的是全部值,而不是选定的选项。之后我尝试了上面的代码,现在当我提交表单时,选择值显示最后一个选项,所有选项都有selected 属性。

我怎样才能改变这个逻辑,所以当我选择让我们说第二个选项时,提交表单后,selected 属性只会出现在第二个选项上,所以文本将是第二个选项?

结论: 谢谢你们的回答。你们都是对的。我给了你们所有人+1,我选择了哈桑的答案,因为它解释得很好。

【问题讨论】:

  • 这是因为您设置了一次 $selected 值,但您从未取消设置它。因此,在您的 if 语句成功后,所有后续选项也将设置为选中状态。尝试添加 else { $selected = ''; } 或具有相同效果的东西。
  • 是的,我之前已经检查过其他人的答案,现在我知道缺少的差距。不管怎么说,还是要谢谢你。 :)

标签: php mysql select


【解决方案1】:

目前您正在检查/比较值并生成变量。您需要使用else 条件,因为您必须更改/重置生成变量的值。请参阅下面的示例。

if($_POST['specialties'] == $id) {
    $selected = 'selected';
}
else
    $selected = '';

【讨论】:

    【解决方案2】:

    添加else 子句将selected 属性重置为空字符串。

    if($_POST['specialties'] == $id) {
        $selected = 'selected';
    }
    else{
        $selected = '';
    }
    

    【讨论】:

      【解决方案3】:

      您需要每次都将选定的变量设为空,如下所示

      while($row = mysqli_fetch_assoc($result)) {
          $selected = '';
        $id = $row['id'];
        $title = $row['title_'. $lang];
      
        if($_POST['specialties'] == $id) {
            $selected = 'selected';
        }
      
        echo '<option value="' . $id . ' "' . $selected . '>' . $title . '</option>';
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多