使用PHP和MySQL在选择选项上打印所选属性

时间:2016-05-09 10:48:40

标签: php mysql select

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

以下是我的代码的一部分:

<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属性将仅出现在第二个选项上,因此文本将是第二个选项?< / p>

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

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

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>';
}

答案 2 :(得分:1)

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

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