根据存储的mysql值选择Select Option

时间:2012-08-26 19:28:11

标签: php mysql forms

我有一个用户个人资料的编辑页面。一个选项是“国家”,其中包含php文件中列出的所有国家/地区(国家/地区未从数据库加载)。在用户编辑个人资料页面上,我希望能够从列表中选择当前存储的选项值。

我可以这样做:

<option value="Afghanistan" <?php if ($results['country'] == 'Afghanistan') echo 'selected';?> >Afghanistan</option>
<option value="Albania" <?php if ($results['country'] == 'Albania') echo 'selected';?> >Albania</option>
<option value="Algeria" <?php if ($results['country'] == 'Algeria') echo 'selected';?> >Algeria</option>
<option value="American Samoa" <?php if ($results['country'] == 'American Samoa') echo 'selected';?> >American Samoa</option>
 // The rest of the countries here :(..

如果没有将所有国家/地区纳入数据库,是否有更好(更清洁)的方法?

3 个答案:

答案 0 :(得分:2)

使用$countries循环迭代foreach数组,并生成选项,匹配国家/地区值以查找所选内容。

示例:

$countries = array("Afghanistan", "Albania", "Algeria", "American Samoa");

foreach ($countries as $country) {
    echo "<option value='$country'";
    if ($country == $results["country"]) {
        echo " selected";
    }
    echo ">$country</option>\n";
}

输出($results["country"] = "Albania"):

<option value='Afghanistan'>Afghanistan</option>
<option value='Albania' selected>Albania</option>
<option value='Algeria'>Algeria</option>
<option value='American Samoa'>American Samoa</option>

答案 1 :(得分:2)

如果我理解你想要什么,我建议使用foreach循环:

$countries = array(
    "Afghanistan",
    "Albania",
    "Algeria",
    "American Samoa"
    // ...
);

foreach($countries as $country) {
    echo '<option value="'.$country.'"';
    if($country == $results['country']) {
        echo ' selected="selected"';
    }
    echo '>'.$country.'</option>';
}

答案 2 :(得分:0)

除了其他答案,如果您无法将国家/地区存储在数据库中,您可以考虑将它们存储在文本文件中。读取它们并迭代它们。这样可以更轻松地添加新国家/地区而无需更改代码。只是一个想法。