sql >> Databasteknik >  >> RDS >> Mysql

php/mysql postnummer närhetssökning

Här är det bästa sättet jag har hittat. Naturligtvis kommer det att kräva att du har alla dina postnummer lat/lon kodade i databasen.

// get all the zipcodes within the specified radius - default 20
function zipcodeRadius($lat, $lon, $radius)
{
    $radius = $radius ? $radius : 20;
    $sql = 'SELECT distinct(ZipCode) FROM zipcode  WHERE (3958*3.1415926*sqrt((Latitude-'.$lat.')*(Latitude-'.$lat.') + cos(Latitude/57.29578)*cos('.$lat.'/57.29578)*(Longitude-'.$lon.')*(Longitude-'.$lon.'))/180) <= '.$radius.';';
    $result = $this->db->query($sql);
    // get each result
    $zipcodeList = array();
    while($row = $this->db->fetch_array($result))
    {
        array_push($zipcodeList, $row['ZipCode']);
    }
    return $zipcodeList;
}

Du borde bara kunna släppa in den här funktionen. Skicka $lat och $lon för postnumret du vill ha radien för, inkludera den valfria radien och få tillbaka en lista med postnummer.

Du kan mycket enkelt ändra detta för att få alla användare till postnummer IN (radius_sql) och få dina listaanvändare tillbaka.

Lycka till med kodningen!



  1. Konfigurera AlwaysOn Availability Groups på SQL Server

  2. Hur ökar man MySQL-anslutningar (max_connections)?

  3. Det gick inte att ladda com.mysql.jdbc.Driver

  4. java.sql.SQLException:Åtkomst nekad för användaren 'root'@'localhost' (med lösenord:JA)