在PHP表单中以单词形式提供选项,在选择框中选择一个选项

时间:2012-09-12 09:03:57

标签: php html forms selection drop-down-menu

我的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 语句。

由于

2 个答案:

答案 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,但也应该来自数据库。