当前位置:  开发笔记 > 编程语言 > 正文

在数据库中找到重复的地址,阻止用户提前输入它们?

如何解决《在数据库中找到重复的地址,阻止用户提前输入它们?》经验,为你挑选了2个好方法。

如何在数据库中找到重复的地址,或者在填写表单时更好地阻止人们?我想越早越好?

是否有任何好的方法来抽象街道,邮政编码等,以便可以检测到错别字和简单的尝试获得2次注册?喜欢:

Quellenstrasse 66/11 
Quellenstr. 66a-11

我在说德语地址......谢谢!



1> Espo..:

您可以使用Google GeoCode API

事实上,这两个例子都给出了结果,只是试了一下.这样您就可以获得可以保存在数据库中的结构化结果.如果查找失败,请要求用户以其他方式编写地址.


Google GeoCode API上的条款规定禁止使用API​​而不在地图上显示结果.请参阅https://developers.google.com/maps/documentation/geocoding/index上的"使用限制"

2> ConroyP..:

你越早阻止别人,从长远来看就越容易!

不太熟悉您的数据库架构或数据输入表单,我建议一个类似如下的路由:

您的数据库中为每个地址"部分"都有不同的字段,例如街道,城市,邮政编码,Länder等.

将您的数据输入表格分类,例如街道,城市等

上述背后的原因是每个部分都可能有自己特定的"规则"来检查稍微改变的地址,("Quellenstrasse" - >"Quellenstr.","66/11" - >"66a-11")因此,验证代码可以检查每个字段的值是否存在于各自的db字段中.如果没有,您可以拥有一个类,为每个给定的字段应用转换规则(例如"strasse"阻止为"str")并再次检查重复项.

显然上面的方法有它的缺点:

它可能很慢,具体取决于您的数据集,让用户等待

用户可以尝试通过将地址"部件"放在错误的字段中(将邮政代码附加到城市等)来绕过它.但从经验来看,我们发现即使是如上所述的简单检查,也会阻止大部分用户输入预先存在的地址.

完成基本检查后,您可以查看优化所需的数据库访问,优化规则等以满足您的特定模式.你也可以看一下MySQL的match()函数来编写类似的文本.

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有