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 (3 つの値) が次のようになる必要があります。

<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 に答える