皆さん、ありがとうございました。 私がしようとしているのは、ユーザーからの緯度と経度を使って、DBに保存されている緯度と経度と都市の関連する名前を比較することです。私が今使っているコードはうまくいきますが、問題は半径30マイル以内に複数の行がある可能性があることです。私のコードを見て、できるなら助けてください。最小値を選択するPHP mysqli_fetch_array
<?php function distance($lat1, $lon1, $lat2, $lon2) {
$pi80 = M_PI/180;
$lat1 *= $pi80;
$lon1 *= $pi80;
$lat2 *= $pi80;
$lon2 *= $pi80;
$r = 6372.797; // mean radius of Earth in km
$dlat = $lat2 - $lat1;
$dlon = $lon2 - $lon1;
$a = sin($dlat/2) * sin($dlat/2) + cos($lat1) * cos($lat2) * sin($dlon/2) * sin($dlon/2);
$c = 2 * atan2(sqrt($a), sqrt(1 - $a));
$km = $r * $c;
//echo '<br/>'.$km;
$km = $km * 0.621371;
return $km;
}
include_once("dbconnect.php");
/* check connection */
if ($mysqli->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
exit();
}
$grabCities = "SELECT * FROM cities";
$result = $mysqli->query($grabCities);
while($row = mysqli_fetch_array($result)){
$distance = distance(41.08866717,-81.4780426,$row['lat'],$row['longitude']);
if ($distance < 30){
echo $myCity = $row['City'] . "<BR>";
}
}
$mysqli->close();
?>
あなたがここで求めていることは本当に明確ではありません。 – Augwa
私がしようとしていることは、自分のDBにあるすべての結果からです。緯度と経度を変換します。ユーザーとの距離が最も近い都市を探し、その都市を選択します。 @Augwa –
これはSQLで行うことができ、結果は1のままで注文できます。 – Augwa