sql >> Databáze >  >> RDS >> Mysql

php/mysql PSČ pro vyhledávání blízkosti

Zde je nejlepší způsob, který jsem našel. Samozřejmě to bude vyžadovat, abyste měli všechna vaše PSČ zakódovaná v databázi.

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

Měli byste být schopni tuto funkci jednoduše spustit. Předejte mu $lat a $lon PSČ, pro který chcete poloměr, zahrňte volitelný poloměr a získejte zpět seznam PSČ.

Můžete to velmi snadno upravit, abyste dostali všechny uživatele, kde je PSČ IN (radius_sql) a získali zpět uživatele svého seznamu.

Šťastné kódování!



  1. Přidejte třídění stránkování a vyhledávání pomocí jquery datatable

  2. Django JSONField uvnitř ArrayField

  3. Webinář:Bankovnictví na Postgres – úvahy o finanční aplikaci [Následovat]

  4. Více databází a transakcí