如何从数据库中检索和呈现唯一选定的下拉列表值

时间:2017-07-19 12:56:24

标签: php

在PHP中,我正在查询当前优先级($ priority)和数据库中的动态优先级列表。我想解决的问题是如何只显示当前未选中的下拉列表中的值。例如,如果数据库中的优先级值为“低”,则当while循环通过渲染下拉选项时,“' low'仍然在下拉列表中,即使它已被列为已选中(在列表中显示为重复)。从用户体验的角度来看,我更愿意看到所选的值,然后是当前未选择的值。谢谢你的帮助。

enter image description here

         <select class="form-control" id="priority" name="priority" id="priority">
            <option selected="<?php echo $query2['priority']; ?>. selected"><?php echo $query2['priority']; ?></option>
            <?php
              $priority = $query2['priority'];
              $query3=mysqli_query($con, "SELECT DISTINCT priority FROM todo ORDER BY priority ASC");

              while($listOfPrioritiesVal=mysqli_fetch_array($query3)){
                if ($priority == $listOfPrioritiesVal['priority']) {
                  echo "";
                }

                else {
                  echo '<option value="'.$listOfPrioritiesVal['priority'].'">'.$listOfPrioritiesVal['priority'].'</option>';
                }
              } 
            ?>
          </select>

1 个答案:

答案 0 :(得分:0)

由于您已经为所选值添加了<option>标记,因此您可以继续循环而不执行任何操作。

while($listOfPrioritiesVal=mysqli_fetch_array($query3)){

    if ($priority === $listOfPrioritiesVal['priority']) {
        continue;
    }else{
        echo '<option value="'.$listOfPrioritiesVal['priority'].'">'.$listOfPrioritiesVal['priority'].'</option>';
    }
}

但我建议如下。

//  Remove your very first `<option>` tag.
while($listOfPrioritiesVal=mysqli_fetch_array($query3)){

    if ($priority === $listOfPrioritiesVal['priority']) {

        <option selected="selected"><?php echo $priority; ?></option>

    }else{

        echo '<option value="'.$listOfPrioritiesVal['priority'].'">'.$listOfPrioritiesVal['priority'].'</option>';
    }
}