将所选国家/地区从数据库中导入选择框

时间:2011-04-26 00:53:45

标签: php mysql select

大家好,谢谢你的时间。

我正在使用以下查询从我的数据库中获取信息:

$sql = "SELECT amember_countries.country, amember_countries.title, gold_profile.username, gold_profile.country AS userCountry 
        FROM amember_countries 
        LEFT JOIN gold_profile
        ON amember_countries.country = gold_profile.country

        ORDER BY amember_countries.title ASC
        ";

$rs = mysql_query($sql);

$selected = "";

while($row = mysql_fetch_array($rs))
{
    if ($row['userCountry'] == $row['country'] && $row['username'] == $username){
    $selected = "selected"; 
    }else{
    $selected = "";

    }
    echo "<option ".$selected." value=\"".$row['country']."\">".$row['title']."\n "; 
}

它工作正常,但我面临的问题是,如果3人来自荷兰,选择框将显示3次荷兰。其他国家也是如此。

例如:

user 1 is from The Netherlands
user 3 is from The Netherlands
user 6 is from The Netherlands

点击选择框时会显示:

Belgium
Canada
Luxemburg
Netherlands
Netherlands
Netherlands

同样的事情发生在其他国家。

知道如何解决这个问题吗?

提前致谢!

2 个答案:

答案 0 :(得分:2)

可能的解决方案:

代码方

你可以这样做:

$a = array();
while($row = mysql_fetch_array($rs))
{
    if ($row['userCountry'] == $row['country'] && $row['username'] == $username){
    $selected = "selected"; 
    }else{
    $selected = "";

    }
    if(!in_array($row['country'], $a))
    {
       echo "<option ".$selected." value=\"".$row['country']."\">".$row['title']."\n "; 
       array_push($a, $row['country']);
    }
}

<强>数据库

您还可以定制数据库查询,只需选择国家/地区:

SELECT * FROM FROM amember_countries GROUP BY amember_countries.country

......或者那种效果。

我个人建议数据库解决方案,因为这将是“正确的”解决方案(数据库是为了解决这类问题而制定的)。

答案 1 :(得分:1)

看起来你正试图用一个查询一次做两件事:

  1. amember_country
  2. 获取所有国家/地区
  3. 获取gold_profile.country的{​​{1}}。
  4. 如果您首先获取$username的信息然后执行此操作以获取国家/地区列表,您将获得更好的运气:

    $username

    GROUP BY将折叠重复项。

    然后,您需要更新$sql = "SELECT country, title FROM amember_countries GROUP BY country, title ORDER BY title ASC "; 外观以使用while而非$username的国家/地区来确定所选的选项。