0

嗨,我是 php 和 mysql 的新手,我想知道是否有一种方法可以将我网站上的用户列表显示给彼此邮政编码一定距离内的其他用户?因此,当用户注册时,他们会注册一个邮政编码,这会显示他们附近的用户列表?

因此,如果

  • 用户 (a) 住在 m3 4jj
  • 用户 (b) 住在 m3 4ej

这两个人相距不到 1 英里。

有没有办法在 php 和 mysql 中做到这一点?有人可以告诉我从哪里开始或分享任何教程。谢谢。

我不能在 myqsl 中创建更基本的东西吗(不需要任何额外的 api 或数据库?):

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;
        }
4

1 回答 1

1

这是一个相当广泛的主题,可以作为一个问题提出,因为它涉及整个应用程序的逻辑。

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

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

Edit2:看来我的“可能很昂贵”已经过时了,因为军械测量局现在提供免费版本的邮政编码来映射位置数据

于 2013-03-11T00:35:21.837 回答