したがって、既にデータベースにある Units を編集するフォームがあります。ユニットへのサプライヤーを選択できる複数選択ドロップダウンがあります。ユニットに既に割り当てられているサプライヤーがドロップダウンで選択 (強調表示) されるようにする必要があるため、ユーザーは、ユニットに追加する新しいサプライヤーを ctrl キーを押しながらクリックするだけで済みます。
units_suppliers は、ユニット ID とサプライヤ ID のペアを含む、私が設定したジャンクション テーブルで、どのサプライヤがどのユニットに割り当てられているか、またその逆も同様です。
これは私が現在持っているコードですが、機能していません。異なる SQL クエリに基づいて 2 つの異なる配列を作成し、それらが同じサプライヤー名を持っているかどうかを比較しようとしました。同じ場合は、「selected」属性がタグに追加されました。しかし、それは機能していないようです。誰でも私を助けることができますか?
編集:クエリは両方とも正しい結果を生成するように見えるので、ネストされたループに問題があると思いますが、何が問題なのかわかりません。アドバイスをありがとう。
<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']}";
}
?>