sql >> Database >  >> RDS >> Mysql

php/mysql postcode nabijheid zoeken

Dit is de beste manier die ik heb gevonden. Het vereist natuurlijk dat u al uw postcodes lat/lon in de database hebt gecodeerd.

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

Je zou gewoon in deze functie moeten kunnen vallen. Geef het de $lat en $lon door van de postcode waarvoor je de straal wilt hebben, voeg de optionele straal toe en krijg een lijst met postcodes terug.

Je zou dit heel gemakkelijk kunnen wijzigen om alle gebruikers met postcode IN (radius_sql) te krijgen en je lijstgebruikers terug te krijgen.

Veel plezier met coderen!



  1. hoe mysql_data_seek gebruiken met PDO?

  2. Hoe getallen naar woorden te converteren - ORACLE

  3. JSON_ARRAY_APPEND() – Waarden toevoegen aan een JSON-array in MySQL

  4. verwijder de laatste rij in een tabel met behulp van sql-query?