大家好,谢谢你的时间。
我正在使用以下查询从我的数据库中获取信息:
$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
同样的事情发生在其他国家。
知道如何解决这个问题吗?
提前致谢!
答案 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)
看起来你正试图用一个查询一次做两件事:
amember_country
。gold_profile.country
的{{1}}。如果您首先获取$username
的信息然后执行此操作以获取国家/地区列表,您将获得更好的运气:
$username
GROUP BY将折叠重复项。
然后,您需要更新$sql = "SELECT country, title
FROM amember_countries
GROUP BY country, title
ORDER BY title ASC
";
外观以使用while
而非$username
的国家/地区来确定所选的选项。