0

次の2つのテーブルがあるとします。

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_codeを使用する代わりに、country_nameをuser_tableに格納するだけでしたが、マップスクリプトを実装することも決定しました...これは、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であり、カナダを表示したいと思います。

4

1 に答える 1

1

私の理解が正しければ、SQL 結合に慣れる必要があります。

これら 2 つのテーブルを結合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 に関するこのトピックについて説明します。

于 2012-11-15T11:34:30.300 に答える