2012-02-09 33 views
2

我有一個數據庫表,包含任何(無關)的地址。Php地址驗證定位器

現在的問題是,如果行中包含「Antwerp」,「Antwerpen」或「Anvers」,它是相同的,但偏離過程中db不知道這一點。

我可以有一個包含所有比利時城市的數據庫表,我可以讓用戶通過選擇框輸入城市,這樣就沒有空間容納城市的錯字和不同語言。

這將工作,但在某些情況下,我想自動填充Facebook數據的輸入字段,但我無法弄清楚如何確定哪個城市匹配來自Facebook的城市,因爲城市所處的語言取決於用戶。

理想情況下,我會有一個數據庫表,包含所有城市和他們的翻譯,但我還沒有找到一個。

我能想到的是下降的自動填充功能的唯一的事情... :(

任何人有其他的建議?

+0

如何使用郵編?它是否必須是城市名稱?它很容易找到一個數據庫的城市郵編:) – Kato 2012-02-09 17:40:21

+0

它可以是任何事情,但Facebook不會返回一個郵政編碼。或者至少不會像城市名稱那樣頻繁...... – 2012-02-09 17:42:18

+2

**不要爲題目添加解題。如果答案是你希望點擊刻度標記的。** – phwd 2012-02-09 18:14:23

回答

0

收穫數據庫wikipedia或從here(谷歌爲「比利時城市名單」),或我們這world cities database(所有谷歌的結果)。

不是創建表的模式是這樣的:

CREATE TABLE cities (
    id INT AUTO_INCREMENT, 
    state_id INT, -- If you want to 
    name VARCHAR(255), 
    status ENUM('confirmed', 'user_added') 
    PRIMARY (id), 
    INDEX (status), 
    UNIQUE KEY (name) 
) 

您也可以實現同義詞的處理是這樣的:

CREATE TABLES synonyms (
    id INT AUTO_INCREMENT, 
    city_id INT, 
    name VARCHAR(255), 
    PRIMARY(id), 
    UNIQUE(nane) 
) 

可能比你無論是從城市的克隆所有值同義詞(數據將保證完整性),並且選擇將變得簡單或者只是同義詞(並且在選擇它們時寫入更復雜的內部連接),並且僅在設置新值時使用它們。

無論如何,你將創建一個像「未列出」這樣的選項的字段城市(選擇框),這將允許用戶手動添加城市(狀態爲user_added),管理員將不得不手動檢查/添加/刪除/編輯。

+1

@issemdanny答案與相同的分數(票)是隨機排列的,所以他們有同等的閱讀機會。 – Vyktor 2012-02-09 18:02:01

+1

@issemdanny如果這是你的問題的答案,你應該點擊「好的標記」下面的投票按鈕(所以人們會知道你有你的答案) – Vyktor 2012-02-09 18:14:32

0

可以使用Google Geocoding API,只要通過GET請求發送地址,並使用返回formatted_address領域。這應該給你正確的信息。

我也嘗試了谷歌Places API的一次,但他們給非常糟糕的結果。

Example Code for PHP/MySQL可以在這裏找到。你必須稍微修改這個例子,但它應該給你一個線索。

+0

謝謝,但我忘了提及我已經看過這個,我想知道那是怎麼回事...注意:Geocoding API只能與Google結合使用地圖;禁止在地圖上顯示地理編碼結果。有關允許使用的完整詳細信息,請參閱Maps API服務條款許可限制。---->請注意,不應將此技術用於具有數千個地址的地理編碼數據庫,因爲這違反了此服務的預期用途。 – 2012-02-09 17:52:27