だから私はすでにすべての都市、州、郵便番号の場所のデータベースを持っています.
私は現在、検索を実行して x マイル離れた周囲の郵便番号の結果を取得する方法に取り組んでおり、いくつかの問題に遭遇しました。
郵便番号は事前定義された値であるため、郵便番号を入力する検索が正常に機能しています。しかし、市、州の結果に問題があります。現在、「シカゴ」などの都市名だけを入力した場合にのみ機能します... しかし、「イリノイ州シカゴ」と入力した場合は機能しません。
検索フォーム searchval の $_GET のコードは次のとおりです。
助けてください!
$searchval = $mysql->escape_data($_GET['searchval']);
if (!empty($searchval))
{
if(preg_match("~\d{5}~", $searchval)) {
$zip = $searchval;
}
else {
$city = $searchval;
}
} else
{
$error .= "<div id='Error'>Please enter zip</div>";
$zip = false;
}
以下は、実際に $zip または $city を受け取り、周囲の郵便番号を取得するコードです。郵便番号を入力すると、正常に機能します。都市名だけを入力すると、正常に機能します。「イリノイ州シカゴ」と入力しても機能しません。
<?php
//if user entered a city ex. "Chicago"
if(isset($city)) {
$q = 'SELECT City, State, ZipCode FROM zipcodes WHERE City like "'. $city .'%" ORDER BY ZipCode ASC Limit 0,10';
$result = $mysql->query($q);
$row = mysqli_fetch_array($result);
$zip = $row[2];
if(mysqli_num_rows($result) != 1) {
echo"Did you mean...<br />";
while($row = mysqli_fetch_array($result)) {
echo "<a href='" .$_SERVER['PHP_SELF'] . "?searchval=".$row[2]."&miles=".$miles."'>" . $row[0] . " " . $row[1] . " " . $row[2] . "</a><br />";
}
}
}
$zcr = new ZipCodesRange($mysql,$zip,$miles);
$zcr->setNewOrigin($zip);
//if user entered a zip code ex. "08026"
if($zcr->validateZipCode($zip)) {
$citystate=$zcr->getCityState($zip);
echo "Zip Codes Within " . $miles ." miles of " . $citystate[0] . ", " . $citystate[1] . " " . $zip;
}
$zcr->setZipCodesInRange();
$zipArray = $zcr->getZipCodesInRange();
asort($zipArray);
$z = implode(",", array_keys($zipArray));
$q = "SELECT * FROM " . TBL_PUBS . " WHERE zip IN ($z) AND( status = 'Pending' OR status = 'Active' )";
$result = $mysql->query($q);
while ($row = $result->fetch_object()) {
$lonlat=$zcr->getLonLat($row->zip);
$distance = $zcr->calculateDistance($lonlat[1], $lonlat[0], $zip);
?>