多个数组选择

时间:2012-11-09 05:04:56

标签: php arrays

我有:

$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时,我无法找到解决方案。

2 个答案:

答案 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>";
}