这是我的mysql和php代码布局:
我有3张桌子
这是我如何布置我的表格: - 插入“人”表A的大表格; “去过”表C. 在表单中,一个人多次选择插入“beenTo”的“地点”
我的问题是,当我正在编辑“人物”时,如何显示用户已选择在我的多选项下拉菜单中显示的内容?
我的下拉菜单会在查询“地点”表格时将其显示在多选下拉菜单中。当一个人去过一个地方时,如果有一个以上的“被淘汰”的地方,这个问题会出现吗?
答案 0 :(得分:2)
Foreach选项,检查它们是否已经过它。然后将selected =“selected”属性添加到标记中,如果为true。
示例:
<select multiple="multiple">
<option selected="selected">Rome</option>
<option>France</option>
<option selected="selected">Underpants</option>
</select>
在PHP中,这可能看起来像:
$beenTo = array("Rome","Underpants");
$places = array("Rome","France","Underpants");
?> <select multiple="multiple"> <?php
foreach($places as $place) {
echo "<option";
$found = false;
foreach($beenTo as $placeBeenTo) {
echo "value='$place'";
if ($placeBeenTo == $place) {
$found == true;
echo " selected=\"selected\" ";
break;
}
}
if (!$found) echo ">";
echo $place . "</option>";
}
?> </select> <?php
这可能是一种更有效的方法。
答案 1 :(得分:1)
为了澄清,您需要为select标签指定一个name属性,以允许多个选定的选项正常运行。
<form method="post" action="">
<select name="places[]" multiple="multiple">
<?php
$_POST += array('places' => array());
$places = array('fr' => 'France', 'cn' => 'China', 'jp' => 'Japan');
$beenTo = array_flip($_POST['places']);
foreach ($places as $place => $place_label) {
$selected = isset($beenTo[$place]) ? ' selected="selected"' : '';
echo '<option value="' . $place . '"' . $selected . '>' . $place_label . '</option>';
}
?>
</select>
<input type="submit" value="Save Changes" />
</form>
答案 2 :(得分:0)
<option id = 'example' <? if ($_POST['example']) echo 'selected' ?>>
但是你将使用$ _SERVER ['cookies']或其他缓存来存储过去的访问,而不是$ _POST数组..编辑带有极端的偏见