2010-05-13 126 views
0

我有一個加拿大郵政編碼數據庫和執行我的搜索的腳本。但由於某種原因,我沒有根據郵政編碼搜索得到最近的營地。我在做我的SQL查詢時遇到了問題,因爲當我選擇露營地時,它會顯示範圍內的業務不是最近的。通過郵政編碼找到最近的露營地

當我運行SQL查詢的距離來獲得震盪整理郵政代碼我得到這個PHP

Array (
[N0C 1K0] => 0 
[N0C 1G0] => 9.36 
[N0C 1L0] => 9.36 
[N0C 1E0] => 9.97 
[N0H 2S0] => 12.95 
[N0C 1H0] => 13.01 
[N0G 1R0] => 15.04 
[N0C 1B0] => 19.03 
[N0G 2A0] => 19.07 
[N0H 1C0] => 19.55 
[N0G 1N0] => 20.24 
[N0C 1J0] => 21.67 
[N0G 2L1] => 25.39 
[N0G 2L3] => 25.39 
[N0G 2L0] => 25.39 
[N0H 1R0] => 25.8 campground found 
[N0C 1C0] => 25.83 
[N0H 2V0] => 27.43 
[N0G 1C0] => 29.1 
.... 
[N0G 1A0] => 41.54 
[L0N 1G0] => 41.86 
[N0G 2J0] => 41.94 
[N0G 2V0] => 42.21 
[L0M 1P0] => 43.21 
[N0H 2P0] => 43.76 
[N0G 1Y0] => 44.27 
[L0M 1L0] => 44.27 
[N0G 2P0] => 44.28 campground found 
[L0M 1G0] => 44.48 
[N4L 1R4] => 44.49 campground found 
) 

我想獲得營地細節25.8,但我得到了44.28的一個,幫幫我!

SELECT camp_id FROM campgrounds WHERE postal = '".addslashes($key)."' LIMIT 1; 

我應該有ORDER BY嗎? - 我確實嘗試過。但也許在我的查詢錯誤的順序。

+0

首先做一些基本的調試。 '$ key'包含什麼? – 2010-05-13 14:09:47

+0

我正在使用這個PHP CLASS http://www.micahcarrick.com/04-19-2005/php-zip-code-range-and-distance-calculation.html;函數get_zips_in_range 我然後採取的結果,並做一個foreach。 foreach($ getagents as $ key => $ value){} 要回答您的問題,$ key是數組中的郵政編碼,$ value是距離。 我確實使用這個獲得了露營地的結果,我只是不確定如何得到最近的一個,由於某種原因它按照它們在db中的插入順序排序。我也嘗試了幾個ORDER BY,沒有什麼是最近的。 – Tim 2010-05-13 15:29:58

+0

因此給定數組元素的值包含以公里*和*(可選)字符串「找到露營地」的距離?如果你包含你正在使用的foreach循環,也許會有所幫助。 – JYelton 2010-05-13 15:37:53

回答

0

您可能想看看關於this SO topic的討論,它從一個經度和緯度的數據集開始 - 但目標仍然是關於接近度。

HTH

C.

相關問題