我正在尝试创建一个具有多个选择的分层选择菜单。 我选择类别,并将它们存储在逗号分隔的数组中.etc(1,5,10)。一切正常,但每次我在下拉列表中选择while循环echo的重复值时,我选择另一个值。 有没有其他方法可以做到这一点,没有重复的值?
$tree = '<select name="an_det_category[]" class="an_det_category" multiple>';
$var=explode(",",$row_detail_rec['an_det_category']);
print_r(array_values($var))
foreach ($var as $var1){
$result10 = mysql_query("select * from announcment_categories where an_parendid=0 and an_langid=".$_GET['langid']."");
while ($row= mysql_fetch_array($result10)){
if ($row['an_location']==$var1){$ka='"selected="selected"">';
}else{
$ka='">';
}
$tree .= '<option value="'.$row['an_location'].$ka;
$tree .= $row['an_name'];
$tree .= '</option>';
$tree .= getLowerRanks($row['an_location'],1,$var1);
}
}
$tree .= '</select>';
答案 0 :(得分:0)
不要进行for
循环。只需遍历数据库结果,并使用in_array
来测试当前类别是否属于所选类别之一。
while ($row = mysql_fetch_array($result10)) {
if (in_array($row['an_location'], $var)) {
$ka = 'selected="selected"';
} else {
$ka = '';
}
$tree .= "<option value='{$row['an_location']}' $ka>";
$tree .= $row['an_name'];
$tree .= '</option>';
// I'm not sure what this is, or how to reproduce it in this version
// $tree .= getLowerRanks($row['an_location'], 1, $var1);
}