Comment calculer la distance entre lat/long en php?

Ce que je suis en train de faire c'est que j'ai des entrées dans la base de données qui ont un lat/long stockées avec eux. Je veux calculer la distance entre les utilisateurs lat/long et entrées lat/long (en DB). Après ça, je veux faire écho à ceux avec la distance à moins de 500 mètres. Jusqu'à présent, je suis en mesure de le faire à l'aide de foreach.

<?php
mysql_connect("localhost", "beepbee_kunwarh", "kunwar") or die('MySQL Error.');
mysql_select_db("beepbee_demotest") or die('MySQL Error.');

$Lat = $_REQUEST['Lat'];
$long = $_REQUEST['long'];

$query = mysql_query("SELECT a.*, 3956 * 2 * ASIN(SQRT( POWER(SIN(($Lat - Lat) * pi()/180 /2), 2) + COS($Lat * pi()/180) * COS(Lat * pi()/180) *POWER(SIN(($long - long) * pi()/180 /2), 2) )) as distance FROM userResponse GROUP BY beepid HAVING distance <= 500 ORDER by distance ASC;");
$data = array();
while ($row = mysql_fetch_array($query)) {
    $data[] = $row;
}
echo json_encode($data);
?>
Quel est le problème avec votre code?
son est le calcul de la même distance pour toutes les entrées, fondamentalement, je n'ai aucune idée de wat valeurs sont passé dans $lon2 = $data [$] ["long"]; $lat2 = $data [$] ["Lat"];
double possible de plus Rapide de la distance de recherche compte tenu de la latitude/longitude?
Tu as complètement changé le code dans votre question... C'est maintenant le calcul en SQL et pas en PHP. Pouvez-vous expliquer pourquoi/quel est le problème maintenant?
sa me donne erreur sur la ligne while ($row = mysql_fetch_array($query))

OriginalL'auteur iPhoneDev | 2011-10-06