嗨我是php和mysql的新手,我想知道是否有一种方法可以在我的网站上向其他用户显示一个用户列表,这些用户是在彼此发布代码的一定距离内?因此,当用户注册时,他们会注册一个邮政编码,这会显示他们附近的用户列表?
所以,如果
这两个相距不到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;
}
答案 0 :(得分:1)
这是一个相当广泛的主题,可以作为单个问题提出,因为它涉及整个应用程序的逻辑。
我认为在这种情况下,关键部分不是如何组织数据库或编写PHP,而是如何计算两个邮政编码之间的距离。这需要某种服务或数据库,可以将邮政编码映射到地理位置;这可能意味着支付一个,取决于你想要的精度。
编辑:如果不清楚(特别是非英国用户),英国邮政编码系统基于人口(即地址数量)不在位置。因此,农村邮政编码将覆盖比城市邮编更大的区域,随着城市的增长,新的邮政编码有时会“填补”,导致边界和相邻代码有些不可预测。完整的邮政编码,例如“M3 4JJ”表示只有8个地址,因此可以非常精确地映射正确的数据库,但同样的标记意味着这样的数据库非常大。
Edit2:看来我的“可能很贵”已经过时了,因为军械测量现在提供free version of their Postcode to map location data。