0

我有一个用户个人资料的编辑页面。一个选项是“国家”,所有国家都列在 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 :(..

有没有更好(更清洁)的方法可以在不将所有国家都放入数据库的情况下做到这一点?

4

3 回答 3

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>
于 2012-08-26T19:31:24.090 回答
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>';
}
于 2012-08-26T19:33:29.583 回答
0

In addition to the other answers if you can't store the countries in a DB you may consider storing them in a text file. Read them in and iterate over them. This will make it easier to add new countries without changing code. Just a thought.

于 2012-08-26T20:27:12.247 回答