【问题标题】:Selecting Select Option based on stored mysql value根据存储的 mysql 值选择 Select Option
【发布时间】:2012-08-26 19:28:11
【问题描述】:

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

有没有更好(更清洁)的方法来做到这一点而不将所有国家都放入数据库?

【问题讨论】:

    标签: php mysql forms


    【解决方案1】:

    有,使用foreach 循环迭代$countries 数组,并生成选项,与国家/地区值匹配以找到所选对象。

    例子:

    $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>
    

    【讨论】:

    • 谢谢,这是正确的答案。另一个答案也是正确的,但你是第一个回答的!感谢您的帮助。
    【解决方案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>';
    }
    

    【讨论】:

    • 您在第一个回声的末尾缺少一个 '。这应该是echo '&lt;option value="'.$country.'"';
    • @Virendra 非常感谢你,我在看代码高亮并认为有问题,但看不到什么:)
    • 谢谢。您的解决方案与“真相”相同 - 但他先回答,所以我选择了他的答案。 +1
    • 一开始他只提供了第一句话作为答案,所以我写了所有的代码,但我不介意。
    【解决方案3】:

    除了其他答案之外,如果您无法将国家/地区存储在数据库中,您可以考虑将它们存储在文本文件中。读入并迭代它们。这将使在不更改代码的情况下添加新国家变得更加容易。只是一个想法。

    【讨论】:

    • 我现在实际上正在这样做!打算使用file()函数,现在只是想弄清楚细节。
    • 为什么?创建一个国家.php 文件并将它们像数组一样放入,然后您所要做的就是require_once('path/to/countries.php');,并且每次加载页面时都不会进行过多的解析。
    • Vlakarados,这就是我的观点。无论编程语言如何,我只是试图保持它的通用性。只是给海报一个小费。
    猜你喜欢
    • 2012-09-01
    • 1970-01-01
    • 2021-01-01
    • 1970-01-01
    • 2020-07-12
    • 2012-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多