sql >> Database teknologi >  >> RDS >> Mysql

php/mysql postnummer nærhedssøgning

Her er den bedste måde, jeg har fundet. Det kræver selvfølgelig, at du har alle dine postnumre lat/lon kodet 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 burde bare kunne droppe denne funktion. Giv den $lat og $lon for det postnummer, du vil have radius for, inkluder den valgfri radius, og få en liste over postnumre tilbage.

Du kan meget nemt ændre dette for at få alle brugere med postnummer IN (radius_sql) og få dine listebrugere tilbage.

God kodning!



  1. pgAdmin III Hvorfor forespørgselsresultater forkortes?

  2. mysql-kommando til at vise aktuelle konfigurationsvariabler

  3. Kan ikke installere pg gem på Mountain Lion

  4. Tjek og optimer MySQL-databasen automatisk med Crontab/Cron