我的PHP表单中有一个标准的选择框,其中包含英国各县的列表,其示例如下所示:
<p class='form_title'>County<br>
<select id="county" name="county">
<optgroup label="England">
<option>Bedfordshire</option>
<option>Berkshire</option>
<option>Bristol</option>
....
<option>Wiltshire</option>
<option>Worcestershire</option>
</optgroup>
<optgroup label="Wales">
<option>Anglesey</option>
...
<option>Radnorshire</option>
</optgroup>
<optgroup label="Scotland">
<option>Aberdeenshire</option>
...
<option>Wigtownshire</option>
</optgroup>
<optgroup label="Northern Ireland">
<option>Antrim</option>
...
<option>Tyrone</option>
</optgroup>
</select>
</p>
用户提交了详细信息后,便可以对其进行编辑。
因此我需要一种方法来选择他们之前选择的选项,因为我选择了他们选择以word格式保存的选项,例如贝德福德郡。
我知道我需要在其中一个选项中加上 selected 这个词,但我想知道是否有更好的方法来执行此操作而不是大量 case 语句。
由于
答案 0 :(得分:1)
尝试这样的事情:
foreach($places as $place) {
$selected = $prevSelectionId == $place['id'] ? " selected='selected' " : "";
echo "<option $selected value='".$place['id']."'>".$place['name']."</option>";
}
</select>
答案 1 :(得分:1)
您应为每个选项设置一个选项值以跟踪该值。
此外,您应该从数据库中生成该内容,然后您可以根据selected
或$_GET
设置$_POST
:
例如:
foreach($county as $name){
$selected = '';
if($name == $_GET['name']){
$selected = ' selected="selected"';
}
echo '<option value="'.$name.'"'.$selected.'>'.$name.'</option>';
}
这不包括您的optgroup
,但也应该来自数据库。