我在这方面需要帮助,并且在思考如何做到这一点时非常困惑。
我有一个表单,一个更新/编辑表单,里面有一个多选列表框。
在我的数据库记录中:
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>';
}
?>
等等。我只列出几个。所以我想问,如果我的列表框选项不是硬编码的,有没有办法做到这一点?
希望你们能理解。提前谢谢。
如果我误解了你和你的代码,我很抱歉,但我认为这就是你想要做的:
<?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>';
}