2011-06-08 98 views
0

你好,我发现这篇文章是有用的,但不幸的是我不能得到它的工作。PHP MySQL距离邮编最近

http://davidsimpson.me/2008/09/28/find-nearest-store-page-using-php-mysql-and-google-maps/

我店在MySQL表邮编,经度,纬度和其他各种店铺的具体信息列表。

我希望用户能够在表单上输入他们的邮政编码,指定以英里为单位的最大距离(即下拉菜单,在10英里内,在20英里等范围内),然后结果为从MySQL数据库中按顺序拉。

任何人都可以对此有所了解。

问候

回答

0

嗯,他清楚地给出了如何获得英里,因此,所有你需要用你的下拉是“拥有英里< {} dropdownvalue”添加到你的SQL语句有。所以如果你有10英里,它有英里< 10等

+0

如果你看看最初的SQL语句,它包含$ longitude和$ latitude,但是这些PHP变量事先没有给出任何值。我是否错过了一些东西,或者是示例PHP代码不完整...? – Rob 2011-06-08 22:02:59

+0

从他在顶部的解释公式中,我得到的印象是用户位置的经度和纬度。 – BugFinder 2011-06-08 22:15:31

2

尽管该示例中提供的方法将起作用,它必须计算表中的每一行的距离。在大规模工作时,这太低效了。看看this tutorial。它使用MySQL中的特殊数据类型作为坐标,并且可以快速搜索。它应该有希望给你一个基础,从哪里开始。

您的解决方案可能会更直接。它将要求所有邮政编码的清单以及所有商店的清单。由于您所有的输入和输出都是已知因素,因此您可以将其预先计算为“缓存”表格,以便为您提供非常快速的结果。创建一个名为StoreDistances10Miles(猜对数据类型和命名约定)表:

postcode CHAR(8) INDEXED, store_id INT(8), metresAway INT(8) 

遍历每个邮编,通过距离商店进行排序,并在10英里的那些保存到表中。现在,当您想通过邮政编码进行搜索时,只需通过邮政编码搜索StoreDistances10Miles,即可获得您的列表。确保你索引postcode

您需要重现您希望在您的网站上提供的每个距离的表格。