Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
最接近邮政编码的PHP MySQL_Php_Mysql_Store_Postal Code - Fatal编程技术网

最接近邮政编码的PHP MySQL

最接近邮政编码的PHP MySQL,php,mysql,store,postal-code,Php,Mysql,Store,Postal Code,您好,我发现这篇文章很有帮助,但不幸的是,我无法让它工作 我在MySQL表中有一个存储列表,其中包含邮政编码、经度、纬度和各种其他特定于存储的信息 我希望用户能够在表单上输入他们的邮政编码,以英里为单位指定最大距离(即下拉菜单,10英里以内,20英里以内等),然后从MySQL数据库中按顺序提取结果 有人能解释一下吗 关于他清楚地给出了如何获取英里数,因此,使用下拉列表只需将“让英里数

您好,我发现这篇文章很有帮助,但不幸的是,我无法让它工作

我在MySQL表中有一个存储列表,其中包含邮政编码、经度、纬度和各种其他特定于存储的信息

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

有人能解释一下吗


关于

他清楚地给出了如何获取英里数,因此,使用下拉列表只需将“让英里数<{dropdownvalue}”添加到sql语句中即可。因此,如果你有10英里,那么它的英里数<10等等。

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

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

迭代每个邮政编码,按距离对商店进行排序,并将10英里内的商店保存到表中。现在,当你想按邮政编码搜索时,只需按邮政编码搜索StoreDistance10英里,你就会得到你的列表。确保索引
postcode


您需要为站点上提供的每个距离重新生成一个表。

如果您查看初始SQL语句,它包含$longitude和$latitude,但这些PHP变量事先没有给出任何值。是我遗漏了什么,还是示例PHP代码不完整…?从他在顶部解释的公式中,我得到的印象是用户位置的经度和纬度。
postcode CHAR(8) INDEXED, store_id INT(8), metresAway INT(8)