定位器的Php地址验证

时间:2012-02-09 17:38:19

标签: php mysql facebook geolocation

我有一个数据库表,其中包含任何地址(不相关的)。

现在的问题是,如果该行包含“Antwerp”,“Antwerpen”或“Anvers”,它是相同的,但是当然数据库不知道这一点。

我可以拥有一个包含所有比利时城市的数据库表,我可以让用户通过选择框进入城市,这样就没有城市错字和差异语言的空间了。

这样可行,但在某些情况下我想用facebook数据自动填充输入字段,但我无法弄清楚如何确定哪个城市与Facebook的匹配,因为城市所在的语言取决于用户。

理想情况下,我有一个包含所有城市及其翻译的数据库表,但我还没找到。

我唯一能想到的就是放弃自动填充功能...... :(

有人有其他建议吗?

2 个答案:

答案 0 :(得分:0)

您可以使用Google Geocoding API。只需通过GET请求发送地址,然后使用返回的formatted_address字段。这应该给你正确的信息。

我还尝试了一次Google Places API,但结果非常糟糕。

Example Code for PHP/MySQL 可在此处找到。你必须稍微修改一下这个例子,但它应该给你一个线索。

答案 1 :(得分:0)

wikipediahere收集数据库(谷歌搜索“比利时城市列表”),或者我们这个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),管理员必须检查/添加/删除/手动编辑。