我有:
$selectedItem = '100,200,300';
和mysql加载:
<select multiple="multiple" name="product_id">
<?php
$query = mysql_query("SELECT * FROM products ORDER BY id");
while($row = mysql_fetch_array($query)){
echo '<option value="$row[id]">$name</option>';
}
?>
</select>
我需要 $ selectedItem (三个值):
<option value="$row[id]" selected>$row[id]</option>
我该怎么做?当 selectedItem 超过1时,我无法找到解决方案。
答案 0 :(得分:1)
您应该将$selectedItem
变量设为一个数组(并将其命名为复数,因为它可以有多个值;只是我添加的首选项= P):
$selectedItems = array(100, 200, 300);
执行此操作,您将能够检查当前行的id
是否在数组中(使用in_array()
),然后“选择”该行:
while($row = mysql_fetch_array($query)) {
$selected = in_array($row['id'], $selectedItems) ? ' selected="selected"' : '';
echo '<option value="' . $row[id] . '"' . $selected . '>' . $row['id'] . '</option>';
}
或者,如果您无法将所选项目列表“定义”为数组,并且仅具有逗号分隔字符串,则可以使用explode()
将其转换为数组成阵列:
$selectedItems = explode(',', $selectedItem);
这会将逗号$selectedItem
变量分割为存储在$selectedItems
中的数组(可与上述代码一起使用)。
答案 1 :(得分:0)
你可以这样做:
while($row = mysql_fetch_array($query)){
if ( str_pos( $selectedItem.',' , $row[id].',' ) !== false) {
$sel = 'selected';
} else {
$sel = '';
}
echo "<option value='$row[id]' $sel>$row[id]</option>";
}