Php 是否在其他用户区域显示本地用户?

Php 是否在其他用户区域显示本地用户?,php,mysql,Php,Mysql,您好,我是php和mysql新手,我想知道是否有一种方法可以将我的站点上的用户列表显示给其他用户,这些用户与其他用户之间的post代码之间有一定的距离?那么,当用户注册时,他们注册了一个邮政编码,这会显示出他们附近的用户列表 所以如果 用户(a)居住在m3 4jj 用户(b)居住在m3 4ej 这两个人相距不超过1英里 在php和mysql中有这样做的方法吗?有人能告诉我从哪里开始,或者分享一些教程吗。谢谢 我是否无法在myqsl中创建更基本的东西,比如(不需要任何附加api或数据库): 这

您好,我是php和mysql新手,我想知道是否有一种方法可以将我的站点上的用户列表显示给其他用户,这些用户与其他用户之间的post代码之间有一定的距离?那么,当用户注册时,他们注册了一个邮政编码,这会显示出他们附近的用户列表

所以如果

  • 用户(a)居住在m3 4jj
  • 用户(b)居住在m3 4ej
这两个人相距不超过1英里

在php和mysql中有这样做的方法吗?有人能告诉我从哪里开始,或者分享一些教程吗。谢谢

我是否无法在myqsl中创建更基本的东西,比如(不需要任何附加api或数据库):


这是一个相当广泛的问题,因为它涉及到整个应用程序的逻辑

我认为本例中的关键部分不是如何组织数据库或编写PHP,而是如何计算两个邮政编码之间的距离。这需要某种服务或数据库,可以将邮政编码映射到地理位置;这可能意味着要支付一个,取决于你想要的精度

编辑:如果不清楚(特别是对非英国用户),英国的邮政编码系统是基于人口(即地址数量)而非地理位置。因此,农村邮政编码将覆盖比城市邮政编码大得多的区域,随着城市的发展,新邮政编码有时会“填充”,从而导致一些不可预测的边界和相邻代码。一个完整的post代码,如“M3 4JJ”,表示只有8个地址,因此使用正确的数据库可以非常精确地映射,但同样地,这意味着这样的数据库非常大


编辑2:我的“可能很贵”一词似乎已经过时了,因为军械调查局现在提供了一个答案。

可能是谷歌地图提供了类似的想法,计算两个给定地址之间的距离,然后返回英里数。然后,您可以通过返回值判断某个用户是否靠近另一个用户,
if(calcDistance(addressUser01,addressUser02)<10文件)回显“User02靠近User01”//这只是伪代码
。是否可以编写一个mysql查询,使用匹配函数来表示如果邮政编码是m3邮政编码,那么以m3开头的所有其他邮政编码都是匹配的,从而将这些匹配显示为其所在地区的本地用户?@JohnSmith这是可能的,但它将非常有限且不精确。例如,BN20的邮政编码区域覆盖了一大片农村地区,但却触及了伊斯特本的部分地区,因此,与BN20的远边缘相比,伊斯特本更接近BN21的全部地区。在它的北面,你将接近BN26,西面,BN25。英国邮政编码系统确实不适合这种基于字符串的比较。
function get_local_users() {
            global $connection;
            $query = "SELECT *,MATCH(user_postcode) AGAINST ('user_postcode' IN BOOLEAN MODE) AS relevance FROM ptb_stats WHERE MATCH(user_postcode) AGAINST('user_postcode' IN BOOLEAN MODE)
    AND ptb_users.account_type = \"User\" AND ptb_users.account_status = \"Active\" AND ptb_stats.user_id = ptb_users.id
                        AND ptb_profiles.user_id=ptb_stats.user_id
                        AND ptb_users.profile_hidden='0'
                         ORDER BY relevance DESC LIMIT 5";
            $local_set = mysql_query($query, $connection);
            confirm_query($local_set);
            return $local_set;
        }