将“selected”分配给多个select元素的选项

时间:2015-05-22 18:05:13

标签: php mysql select

我有一个以逗号分隔的列表存储在mysql中(我在选择后使用了implode并存储了这个以逗号分隔的列表)。我的问题是现在将“selected =”选中“'应用于每个选项,代表我刷新页面时的先前选择。我使用了while循环来创建选择框。我尝试在while循环中使用foreach循环来检查'while'值是否在'爆炸'的前一个选择中。它只将“已选择”的值赋予我的爆炸列表中的最后一项。任何人都可以阐明如何解决这个问题?我认为我误解了foreach,可能还有爆炸功能。

2 个答案:

答案 0 :(得分:1)

假设您之前选择的项目位于变量$ selected中,您的while看起来如下:

$selected = array('one', 'two');
while(//your fech or something i presume storing it in $row) {
    $isSelected = in_array($row['value'],$selected) ? "selected='selected'" : "";
    echo "<option {$isSelected} value='{$row['value']}'>{$row['name']}</option>";
}

答案 1 :(得分:0)

我的代码,它不完美但有效!:

$var_options = array ( 1 => 
array ('name' => "None", 'varid' => "0"),
array ('name' => "Cars", 'varid' => "1"),
array ('name' => "Motos", 'varid' => "2"),
array ('name' => "Trucks", 'varid' => "3"),
); 

$mysqlvalue = "2,3"
$mysqlvalue= explode(",",$mysqlvalue);

echo '<select name="vehicles[]" multiple size="6">'."\n";

foreach ($var_options as $arraydes) {
$idvariable = $arraydes[varid];
$namevariable = $arraydes[name];    

    $isSelected = in_array($idvariable,$mysqlvalue) ? "selected='selected'" : "";
    if($isSelected != ""){
        echo "<option {$isSelected} value='{$idvariable}'>{$namevariable} (SELECTED)</option>\n";
    } else {
        echo "<option value='{$idvariable}'>{$namevariable}</option>\n";
    }

}
echo "</select>\n";

并保存到mysql:

$vehicles= implode(', ', $_POST['vehicles']);