从下拉列表中删除所选选项 php

Remove selected option from dropdown php

我有一个场景,我有一个用户的编辑配置文件页面,其中有一个 'Speciality' 下拉菜单,它的选项正在通过 While 循环从数据库 table 'speciality' 中获取。 我想要的是首先在下拉列表中显示 Selected 选项, 为此,我在顶部放置了以下代码:

<option value=""><?php echo $row2["speciality"];?></option>
             

但是问题又来了,while 循环正在从数据库中获取相同的选项,因此它变得重复,我想要的是从 while 循环的选定选项中删除选定的选项。

谁能帮忙?

完整代码:

<?php
$id = $_GET['id'];
$result = mysqli_query($con, "SELECT * FROM patient WHERE id = $id");
$rows = mysqli_num_rows($result);
$result2 = mysqli_query($con, "SELECT * FROM surgery_team WHERE p_id = $id");
$rows2 = mysqli_num_rows($result2);
while($patient = mysqli_fetch_assoc($result)) {
    $speciality = $patient['speciality'];   
}
}
$result2 = mysqli_query($con,"SELECT * 
                                FROM speciality 
                                WHERE id = $speciality");
$row2 = mysqli_fetch_array($result2);
?>    


<div class="col-6">
    <label class="control-label">Speciality</label>
    <select name="speciality" class="form-control" id="category-dropdown">
    <option value=""><?php echo $row2["speciality"];?></option>
<?php
$result = mysqli_query($con,"SELECT * 
                            FROM speciality 
                            WHERE parent_id = 0");
                    
while($row = mysqli_fetch_array($result)) {
?>
    <option value=""><?php echo $row["speciality"];?></option>
<?php
}
?>

不要将 2 份副本扔到列表中,只需将选中的一份作为下拉列表中的选定项即可。

<div class="col-6">
    <label class="control-label">Speciality</label>
    <select name="speciality" class="form-control" id="category-dropdown">
    
<?php
$result = mysqli_query($con,"SELECT * 
                            FROM speciality 
                            WHERE parent_id = 0");
                    
while($row = mysqli_fetch_array($result)) {
    $attr = $row2["speciality"] == $row["speciality"] ? "selected='selected'" : '';

    echo "<option $attr value='$row[speciality]'>$row[speciality]</option>";
}