我有一个数据库表,其中包含任何地址(不相关的)。
现在的问题是,如果该行包含“Antwerp”,“Antwerpen”或“Anvers”,它是相同的,但是当然数据库不知道这一点。
我可以拥有一个包含所有比利时城市的数据库表,我可以让用户通过选择框进入城市,这样就没有城市错字和差异语言的空间了。
这样可行,但在某些情况下我想用facebook数据自动填充输入字段,但我无法弄清楚如何确定哪个城市与Facebook的匹配,因为城市所在的语言取决于用户。
理想情况下,我有一个包含所有城市及其翻译的数据库表,但我还没找到。
我唯一能想到的就是放弃自动填充功能...... :(
有人有其他建议吗?
答案 0 :(得分:0)
您可以使用Google Geocoding API。只需通过GET请求发送地址,然后使用返回的formatted_address
字段。这应该给你正确的信息。
我还尝试了一次Google Places API,但结果非常糟糕。
Example Code for PHP/MySQL 可在此处找到。你必须稍微修改一下这个例子,但它应该给你一个线索。
答案 1 :(得分: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)
)
您可以将所有值从城市克隆到同义词(数据将保证完整性),选择将很容易或只是同义词(并在选择时编写更复杂的内部联接)并仅在设置新值时使用它们。 / p>
无论如何,您将使用“未列出”选项创建字段城市(选择框),这将允许用户手动添加城市(状态为user_added
),管理员必须检查/添加/删除/手动编辑。