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