0

これについて助けが必要で、これを行う方法を考えると非常に混乱します。

フォーム、更新/編集フォームがあり、その中に複数選択されたリストボックスがあります。

私のデータベースレコードでは:

ID Items
1  Apple
2  Banana
3  Orange
4  Pear
5  Starfruit

そして、ユーザーが編集をクリックすると、以前に保存されたデータに従ってリストボックスが強調表示されたこのフォームに移動します。

ユーザーが更新をクリックすると、更新フォームのリストボックスは次のようになります。

<option selected>Apple</option> <-- highlighted
<option>Banana</option>
<option selected>Orange</option> <-- highlighted
<option>Pear</option>
<option selected>Starfruit</option> <-- highlighted

これは、以前に保存された最初に選択した項目に従ってユーザーに表示されるものです。

現在、私はそれをハードコーディングしています:

<?php
$select=mysql_query("select * from products_list where id='$id' "); 
while($row=mysql_fetch_array($select)){

$product_category = explode("\n", $row['category']);
$i=0;

    echo '<select name="product_category[]" id="category" size="9" multiple="multiple"><option value="Black" ';
if ($product_category[$i] == "Black" ){ echo 'selected="selected"'; $i++; }
echo '>Black</option><option value="White" ';
if ($product_category[$i] == "White" ){ echo 'selected="selected"'; $i++; }
echo '>Black</option><option value="Blue" ';
if ($product_category[$i] == "Blue" ){ echo 'selected="selected"'; $i++; }
echo '>Black</option>';
}
?>

などなど。一部だけ挙げておきます。リストボックスのオプションがハードコーディングされていない場合、これを行う方法はありますか?

皆さんが理解してくれることを願っています。前もって感謝します。

4

1 に答える 1

1

あなたとあなたのコードを誤解していたら申し訳ありませんが、これがあなたがやりたいことだと思います:

<?php
$select=mysql_query("select * from products_list where id='$id' ");

// Insert the categories in an array in order
$categories = array('Black', 'White', 'Blue', ...);

while($row=mysql_fetch_array($select))
{
    $product_category = explode("\n", $row['category']);

    echo '<select name="product_category[]" id="category" size="9" multiple="multiple">';

    foreach($product_category as $i=>$value)
    {
        echo '<option value="'.$categories[$i].'"';

        if($value == $categories[$i])
        {
            echo ' selected="selected"';
        }

        echo '>'.$categories[$i].'</option>';
    }

    echo '</select>';
}
于 2012-07-30T10:00:57.057 に答える