Mysql
 sql >> база данни >  >> RDS >> Mysql

php/mysql търсене в близост до пощенски код

Ето най-добрия начин, който намерих. Разбира се, това ще изисква всичките си пощенски кодове lat/lon да са кодирани в базата данни.

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

Трябва да можете просто да пуснете тази функция. Предайте му $lat и $lon на пощенския код, за който искате радиуса, включете незадължителния радиус и вземете обратно списък с пощенски кодове.

Можете много лесно да промените това, за да получите всички потребители с пощенски код IN (radius_sql) и да върнете потребители в списъка си.

Приятно кодиране!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Alter Stored Procedure

  2. Проектиране на база данни с рецепти, която трябва да включва съставки, както и подрецепти

  3. Показване на сумата в долната част на колоната в mysql

  4. Премахване на числа от низ в mysql

  5. Mysqli присъедини таблици от 2 различни бази данни