2012-11-15 44 views
0

说我有以下两个表:下拉列表中,PHP的MySQL

country_table:

--------------------------------- 
|ID|country_code|country_name | 
|01|CA   |Canada   | 
|02|US   |United States | 
--------------------------------- 

USER_TABLE:

---------------------------------------------- 
|id|user_id|country_code|email_address  | 
|01|oswalsh|CA   |[email protected] | 
|02|jlong |US   |[email protected] | 
---------------------------------------------- 

我创造我的用户注册/编辑帐户形式,并有一个下降的国家。最初我只是将country_name存储在user_table中,而不是使用country_code,但是我也决定实现一个地图脚本...这是一个使用country_code的大量JavaScript文件。

因此,我创建了country_table,以便我可以匹配country_code和country_name,以便映射用户交互...但是我不确定如何为下拉菜单创建sql语句。

我到目前为止有:

<?php 
    include ('../../connect.php'); 

    $account_panel = mysql_query("SELECT * FROM user_table WHERE id=1") 
      or die(mysql_error()); 

      while($row1 = mysql_fetch_array($account_panel)) 
    { 
?> 
<select name="event_country" id="event_country" required /> 
     <option selected="selected" value="<?php echo $row1['user_country']; ?>"><?php echo $row1['user_country']; ?></option> 

     <?php   
      $countries = mysql_query("SELECT * FROM country_table") 
      or die(mysql_error()); 

      while($row = mysql_fetch_array($countries)) 
      { 
       echo "<option value='". $row['value'] ."'>". $row['name'] ."</option>"; 
      } 
       echo "</select>"; 
     ?> 

     <?php 
     } 
     mysql_close($connection); 
     ?> 

所以你应该能够从上面发生了什么,看,就是这个列表是从country_table稀少,但我试图让所选择的值来自用户表。这似乎工作,但我的问题是,国家代码是存储和显示。所以说,我正在抓取oswalsh的信息......我......返回的国家是CA,我希望它能显示加拿大。

回答

1

如果我理解你的权利,你需要熟悉SQL Joins

要加入这两个表,并获得country_nameuser_table用户数据一起,你需要这样一个SQL语句:

SELECT ut.*, ct.country_name 
FROM user_table ut 
INNER JOIN country_table ct 
ON ut.country_code = ct.country_code 

在你的情况,这将导致如下:

1 oswalsh CA [email protected] Canada 
2 jlong US [email protected] United States 

而且,你建议立即进行删除d考虑使用mysqli_并停止使用mysql_函数。关于SA上的这个主题,这里是一个discussion

+0

谢谢拉扎尔,我会做一些阅读 – Owen

+0

很高兴我能帮上忙。干杯 –