Ben en fait, c'est la Corse qui m'a posé pas mal de problème (comme toujours ^^) parce qu'elle est divisée en 2 départements : 2A et 2B sauf que les codes postaux commencent tous par 20***. Si on exécute ton script, je ne pense pas que ça résolve le problème... Si tu l'as fait est que ça fonctionne quand même, dis moi !
Pour info, voilà un objet qui calcule la distance à vole d'oiseau entre 2 villes en donnant les ids des villes :
class Misc
{
public static function getDistance($_idVille1, $_idVille2)
{
$result = mysql_query("SELECT lat, lon FROM ville WHERE id = $_idVille1 OR id = $_idVille2");
$i = 0;
while($data = mysql_fetch_array($result))
{
if($i == 0)
{
$rlo1 = deg2rad($data['lon']);
$rla1 = deg2rad($data['lat']);
}
elseif($i == 1)
{
$rlo2 = deg2rad($data['lon']);
$rla2 = deg2rad($data['lat']);
}
$i++;
}
$earthRadius = 6367000;
$dlo = ($rlo2 - $rlo1) / 2;
$dla = ($rla2 - $rla1) / 2;
$a = (sin($dla) * sin($dla)) + cos($rla1) * cos($rla2) * (sin($dlo) * sin($dlo));
$d = 2 * atan2(sqrt($a), sqrt(1 - $a));
$distance = $earthRadius * $d;
return ceil($distance / 1000);
}
}
Appel principal :
$distance = Misc::getDistance($idVille1, $idVille2);