Posta Kodu Yakınlık / aralığı belirlemek için MySQL Fonksiyon

0 Cevap php

Ben belirli bir posta kodu, belirli bir aralık içinde posta kodları listesini belirlemek için php işlevi oluşturmak mümkün olmuştur. Ancak, benim sonraki görev biraz daha karmaşıktır.

Tablo aşağıdaki sütunları Diyelim:

id,
username
info
latitude
longitude
range

Her kayıt benzersiz bir satır kimliği, bazı bilgiler, enlem, boylam, bir, ve kişi bu giriş için bulunmak isteyenler koordinatlarından bir menzile sahiptir. Ben koordinatları -20, 15 bir dizi ile, 50 ile bir girdi oluşturmak Yani, ben sadece koordinatları -20, 50 15 kilometre mesafedeki insanlar benim girişini görmek mümkün istediğiniz anlamına gelir. Arama çalışan kullanıcının enlem ve boylamını bulmaktan önemsiz bir konudur.

Bir kullanıcı veritabanı sayesinde ararken, tüm kayıtları enlem için alınması gerekir ve boylam enlem / boylam kullanıcıların aralığı değeri içinde koordine eder.

Yani, bu göstermek için mesafe formülü kullanarak kod fonksiyonel olmayan bir örnek olacaktır

$userLat arama çalıştıran kullanıcının enlem =

$userLong arama çalıştıran kullanıcının boylam =

SELECT info FROM table 
WHERE sqrt(($userLat - lat)^2 - ($userLong - long)^2) <= range 
ORDER BY username ASC

Bu ideal olacaktır, ama bu bir kodlama açısından geçerli değildir. Bir sorguda PHP ve MySQL kullanarak yukarıdaki karşılaştırmalar çalıştırmak için herhangi bir yolu var mı? Bu belirli bir satıra birden çok sütun değerlerini kullanarak işlemlerini çalıştırmak için güçlü olmak içerecektir.


UPDATE + SOLUTION

I created another question entry that addresses this issue and has a very compact function to do what this question wanted. The function given by coderpros served as the inspiration for it (his function has a lot better handling for certain situations). However, since I am using my function with a great degree of control over the input, I created a separate function. It can be found at the link below:

http://stackoverflow.com/questions/3640448/mysql-user-defined-function-for-latitude-longitude-syntax

0 Cevap