1

我有:

$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时,我只是找不到解决方案。

4

2 回答 2

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(可与上述代码一起使用)。

于 2012-11-09T05:13:16.170 回答
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>";
}
于 2012-11-09T05:13:06.957 回答