2013-04-10 46 views
0

我昨晚發佈了這個問題,但我措辭錯了,沒有正確解釋。我試圖緩存谷歌地圖的地理編碼結果,用於我已經做出的消防映射,並且我已經接近谷歌的限制,因此需要緩存結果。幫幫我!緩存谷歌地圖的地理編碼結果,但我的代碼是壞

下面的代碼可以工作,但它會在代碼運行時創建新的SQL記錄,而不管該地址是否已存在於數據庫中。它似乎只調用一次谷歌然後保存數據,然後從數據庫加載數據好吧,它看起來像其餘的工作,但我只是不能看到我要去哪裏錯了。正如我所說創建一個新的記錄每次和每次代碼運行時,我都會得到一個完全相同記錄的數據庫。我的大腦很痛,但我真的需要這樣做,所以我可以繼續幫助消防車開火。 :)

哦,我在Google地圖上使用了地理編碼結果(如T & C所允許的),此代碼實際上只是爲了使其工作。我希望這是有道理的,我希望有人可以幫助...謝謝:)

<?php 

$jobadd = "1000 BURWOOD HWY, BURWOOD"; 

// connect to the database 
include('connect-db.php'); 

// get results from database and find needle 
$result = mysql_query("SELECT * FROM geocache") 
or die(mysql_error()); 


while($row = mysql_fetch_array($result)) 
{ 
$needle = '' . $row['address'] . ''; 

if (strpos($jobadd,$needle) !== false) 
{ 
$status = "CACHED"; 
$latitude = '' . $row['latitude'] . ''; 
$longitude = '' . $row['longitude'] . ''; 
} 

else 

{ 
$status = "GOOGLE"; 
$address2 = "$jobadd, Victoria, Australia"; 
define("MAPS_HOST", "maps.google.com"); 
$base_url = "http://" . MAPS_HOST . "/maps/api/geocode/xml"; 
$request_url = $base_url . "?address=" . urlencode($address2) ."&sensor=false"; 
$xml = new SimpleXMLElement(file_get_contents($request_url)); 

$latitude = $xml->result->geometry->location->lat; 
$longitude = $xml->result->geometry->location->lng; 

// save the data to the database 
mysql_query("INSERT geocache SET address='$jobadd', latitude='$latitude', longitude='$longitude' ") 
or die(mysql_error()); 
} 

} 

echo $status; 
echo '<BR>'; 
echo $jobadd; 
echo '<BR>'; 
echo 'LAT:'; 
echo $latitude; 
echo '<BR>'; 
echo 'LON:'; 
echo $longitude; 

?> 

回答

0

你試過輸出strpos的結果嗎?邏輯看起來不正確。問題在於if條件。數據庫中的記錄是什麼樣的?

+0

記錄全部更新,它似乎是從谷歌數據庫中讀取數據後,獲得結果,如果我刷新後的信息。我一直在玩更多的東西,如果我在最後的SQLquery中使用UPDATE而不是INSERT,它似乎可以正常工作,因爲它只是更新一條SQL記錄,而不是每次都創建一條新記錄。然而,每次代碼運行時,它都會用相同的信息毫無意義地更新記錄。我再次希望我有道理!我努力學習,因爲我去了,我是一個緩慢的學習者!大聲笑 – user1508918 2013-04-10 03:45:35