从两个表下拉,php mysql

时间:2012-11-15 04:18:57

标签: php mysql drop-down-menu

说我有以下两个表:

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          |blah@hotmail.com    |
|02|jlong  |US          |blah2@hotmail.com   |
----------------------------------------------

我正在创建用户注册/编辑帐户表单,并为国家/地区提供下拉列表。最初我只是将country_name存储在user_table中而不是使用country_code,但是我还决定实现一个map脚本......这是一个利用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 个答案:

答案 0 :(得分:1)

如果我理解正确,您需要熟悉SQL Joins

要加入这两个表并获取country_name以及user_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  blah@hotmail.com    Canada
2   jlong   US  blah2@hotmail.com   United States

此外,您应该考虑使用mysqli_并停止使用mysql_功能。这是关于SA的这个主题的discussion