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