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 回答