【发布时间】:2013-06-25 18:11:32
【问题描述】:
所以我有一个表格可以编辑我的数据库中已有的单位。有一个多选下拉菜单,我可以在其中选择单位的供应商。我需要已经分配给单元的供应商在下拉列表中显示为选中(突出显示),因此用户只需 ctrl+单击他们想要添加到单元的新供应商。
units_suppliers 是我设置的连接表,其中包含成对的 Unit 和 Supplier 用于确定将哪个供应商分配给哪个单元的 ID,反之亦然。
这是我目前拥有的代码,但它不起作用。我根据不同的 SQL 查询创建了两个不同的数组,并尝试比较它们是否具有相同的供应商名称,如果是,则将“选定”属性添加到标记中。但这似乎不起作用。谁能帮帮我?
编辑:这两个查询似乎都产生了正确的结果,所以我认为问题出在我的嵌套循环中,但我不知道出了什么问题。感谢您的建议。
<td><select size=7 multiple="multiple" name="unitsuppliers[]">
<?php
$sql = "SELECT suppliers_id, supplier_name FROM suppliers GROUP BY supplier_name ORDER BY supplier_name";
$result = mysql_query($sql,$connection);
/* THIS PART FINDS OUT IF THE SUPPLIER SHOULD ALREADY BE HIGHLIGHTED IN THE LIST */
$sql2 = "SELECT suppliers.supplier_name
FROM suppliers, units_suppliers
WHERE units_suppliers.unit_user_id = ";
if(isset($old_details['unit_user_id'])){
$sql2 .= " {$old_details['unit_user_id']} ";
} elseif(isset($_POST['old_unit_id'])){
$sql2 .= " {$_POST['old_unit_id']} ";
} else {
$sql2 .= " 0 ";
}
$sql2 .= " AND suppliers.suppliers_id = units_suppliers.suppliers_id";
$result2 = mysql_query($sql2,$connection);
while ($row = mysql_fetch_array($result)) {
echo "<option value=\"{$row['suppliers_id']}\" ";
while ($in_junc_table = mysql_fetch_array($result2)) {
foreach ($in_junc_table as $array){
if($array['supplier_name'] == $row['supplier_name']){
echo " selected ";
}
}
}
echo " >";
echo "{$row['supplier_name']}";
}
?>
【问题讨论】:
-
您不能只指定
selected。在大多数浏览器中,您仍然需要指定一些真实值:selected="selected"。 -
你不能加入这两个表吗?对于您使用 WHERE 子句设置的条件,这应该只留下两个表中的供应商。
-
@RobW,任何可输入的字段都有一个 mysql_prep() 函数应用于它以停止 SQL 注入。无论如何,谢谢您的提示。
-
@Kyle 我试过 selected='selected' 还是不行。还有其他想法吗?
标签: php html mysql drop-down-menu multi-select