定位器的Php地址验证



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

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

我可以有一个包含所有比利时城市的数据库表,我可以让用户通过选择框输入城市,这样就不会有拼写错误和城市不同语言的空间。

这是可行的,但在某些情况下,我想用facebook数据自动填充输入字段,但我不知道如何确定哪个城市与facebook中的城市匹配,因为城市的语言取决于用户。

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

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

有人有其他建议吗?

Harvest数据库来自维基百科或这里(谷歌搜索"比利时城市列表"),或我们这个世界城市数据库(所有结果来自谷歌)。

然后创建这样的表模式:

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),管理员必须手动检查/添加/删除/编辑。

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

我也试过一次Google Places API,但结果很糟糕。

PHP/MySQL的示例代码可以在这里找到。你必须稍微修改一下这个例子,但它应该会给你一个线索。

相关内容

  • 没有找到相关文章

最新更新