0

ユーザーのデータベースがあります。各ユーザーは、登録時に住所、州、都市、郵便番号を入力する必要があります。

州、都市、郡、郵便番号のデータベース テーブルもあります。これらの表には、利用可能なすべての米国の州、郡、市、および郵便番号が含まれています。

-Zipcodes are linked to cities only. 
-Cities are linked to counties and states. Each city has unique city_id
-Counties are linked to states only. Each county has unique county_id
-Each state has unique state_id

アドレス専用の私のPHPページは、次のもので構成されています。

-SELECT for States (state_name as text; state_id as value)
-TEXTBOX for City (with only city_name as value)
-TEXTBOX for Zipcode

フォームの検証に失敗した場合に備えて、PHP セッションを使用してユーザーが入力した値を保存します。

ユーザーが送信するときに、データベースに city_id を入力できるようにしたいと考えています (その ID には county_id と state_id も含まれるため)。しかし、ユーザーが送信するのは city_name です。どうすればそれに合わせることができますか?

フォームの検証時にデータベースを検索して、ユーザーが入力した内容に基づいて都市を見つけることができるかどうかを確認する必要がありますか? 私は完全な一致が必要だと思います。

オートコンプリートを使用して、jquery と ajax の都市 (city_id を含む) をユーザーの入力内容に基づいて取得し、city_id の値をどこかに保存しますか?

どうすればいいですか?

4

1 に答える 1

1

orにcity_id基づいて取得するクエリは、次のようになりますcity_namezipcode

SELECT c.city_id 
  FROM cities c JOIN zipcodes z
    ON c.city_id = z.city_id
 WHERE c.city_name = 'Baltimore' 
    OR z.zipcode = '21201'
 GROUP BY c.city_id

更新city_idその郵便番号の1つを取得するには

SELECT city_id 
  FROM zipcodes
 WHERE zipcode = '21201'
 GROUP BY city_id

これがSQLFiddleのデモです

于 2013-07-20T21:28:02.263 に答える