0

こんにちは、php と mysql を初めて使用します。自分のサイトのユーザーのリストを、お互いの郵便番号から一定の距離内にいる他のユーザーに表示できる方法があるかどうか疑問に思っていました。ユーザーが登録するときに郵便番号を登録すると、近くにいるユーザーのリストが表示されるのでしょうか?

もしそうなら

  • ユーザー (a) は m3 4jj に住んでいました
  • ユーザー (b) は m3 4ej に住んでいました

これら 2 つは互いに 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を記述したりする方法ではなく、2つの郵便番号間の距離を計算する方法だと思います。それには、郵便番号を地理的な場所にマッピングできる何らかのサービスまたはデータベースが必要です。それはあなたが望む精度に応じて、1つを支払うことを意味するかもしれません。

編集:不明な場合(特に英国以外のユーザーの場合)、英国の郵便番号システムは、場所ではなく人口(つまり住所の数)に基づいています。その結果、地方の郵便番号は都市の郵便番号よりもはるかに広い範囲をカバーし、都市が成長するにつれて新しい郵便番号が「埋められる」ことがあり、多少予測できない境界や隣接するコードにつながります。「M34JJ」などの完全な郵便番号は、わずか8つのアドレスを示すため、適切なデータベースを使用すると非常に正確にマッピングできますが、同じトークンによって、そのようなデータベースは非常に大きくなります。

Edit2:Ordnance Surveyが現在、位置データをマップするための無料バージョンの郵便番号を提供しているため、「高額になる可能性があります」については古くなっているようです。

于 2013-03-11T00:35:21.837 に答える