Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

pencarian kedekatan kode pos php/mysql

Inilah cara terbaik yang saya temukan. Tentu saja Anda harus memiliki semua kode pos lat/lon yang dikodekan dalam database.

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

Anda seharusnya bisa memasukkan fungsi ini saja. Berikan $lat dan $lon dari kode pos yang Anda inginkan radiusnya, sertakan radius opsional, dan dapatkan kembali daftar kode pos.

Anda dapat dengan mudah memodifikasi ini untuk mendapatkan semua pengguna di mana kode pos IN (radius_sql) dan mendapatkan daftar pengguna Anda kembali.

Selamat Mengkode!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sistem penandaan:Pertanyaan solusi toksik

  2. Mengapa kolom teks tidak dapat memiliki nilai default di MySQL?

  3. MySQL 5.5.9 dan kesalahan pembuatan tabel Hibernate pada TYPE

  4. Bagaimana cara menggunakan tipe int/long yang tidak ditandatangani dengan Entity Framework?

  5. Mengganti nama kolom kunci asing di MySQL