0

昨夜この質問を投稿しましたが、言い方が間違っていて、正しく説明していませんでした。私が作成した消防マッピングで使用するためにGooglemapsジオコーディング結果をキャッシュしようとしていますが、Googleの制限に近づいているため、結果をキャッシュする必要があります。ヘルプ!

以下のコードは多少機能しますが、アドレスがデータベースに既に存在するかどうかに関係なく、コードが実行されるたびに新しい sql レコードが作成されます。Googleを1回だけ呼び出してデータを保存し、データベースからデータを正常にロードし、残りは機能しているように見えますが、どこが間違っているのかわかりません..私が言ったように、新しいレコードを作成しますコードが実行されるたびに、同じ同一のレコードでいっぱいのデータベースになってしまいます。頭が痛いですが、消防車の火事の手伝いを続けられるように、これを機能させる必要があります。:)

ああ、私は(T&Cで許可されているように)Googleマップでジオコーディングの結果を使用していますが、このコードは実際にはそれを機能させるためだけのものです. それが理にかなっていることを願っており、誰かが助けてくれることを願っています...ありがとう:)

<?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;

?>
4

1 に答える 1

0

strpos の結果を出力しようとしましたか? ロジックが間違っているようには見えません。問題は if 条件にあります。DB 内のレコードはどのように見えますか?

于 2013-04-10T03:22:37.673 に答える