我正在尝试模仿 Windows“映射网络驱动器”下拉菜单的工作方式。我的下拉选项是字母 AZ。根据我的 SQL SELECT 语句的结果,我需要显示但禁用那些已经在使用的字母。我能够在下拉列表中获取字母,或者在下拉列表中获取我的 SQL 结果,但不能正确组合两者。
如何在下拉列表中显示所有字母并禁用那些在我的 SQSL SELECT 语句中返回的字母?
示例数据库
ID | Desc
-----------
A | Desc A
D | Desc D
F | Desc F
J | Desc J
Z | Desc Z
因此,例如,使用上面的示例 DB,字母“A、D、F、J、Z”将显示但禁用,而字母表中的所有其他字母都是可选的。
这是我目前拥有的代码。它非常接近正确,但不知何故失序。它确实显示了字母表中的每个字母和我的数据库结果(禁用了这些结果),但是每个数据库结果都显示了字母表中的每个字母。再次使用上面的示例数据库,下面的代码将为每个结果显示字母“A”到“Z”(5 次),并且每次仅禁用该结果。
<select>
<?php
// SQL select from Example DB table and connection
while ($row = odbc_fetch_array($db)) {
foreach (range('A', 'Z') as $value) {
if ($row['id'] == $value) {
$result = $value.' -- '.$row['desc'];
$dis = "disabled";
} else {
$result = $value;
$dis = "";
}
?>
<option <?php echo $dis; ?>><?php echo $result; ?></option>
<?php
}
}
?>
</select>
我试过移动'while'和'foreach',但似乎没有让它们按正确的顺序排列。