PHP-Code:
<?php
// Zuerst eine Verbindung zur Datenbank aufbauen!
$connect=@mysql_connect("localhost", "user", "pass")
or die("Cant connect to Database");
@mysql_select_db("geo_plz", $connect)or die("Cant select Database");
// die PLZ nach der wir suchen
$plz = '45143';
// der Umkreis in Km
$umkreis = 5;
// Erdradius (geozentrischer Mittelwert) in Km
$radius = 6368;
/* -------------------------- */
$sql_rad = mysql_query("SELECT lon, lat FROM `plz_at` WHERE `plz` = '$plz' ");
$erg_rad = mysql_fetch_object($sql_rad);
// Umrechnung von GRAD IN RAD
$lon = $erg_rad->lon / 180 * M_PI;
$lat = $erg_rad->lat / 180 * M_PI;
// jetzt erfolgt die eigentliche Abfrage
$query = "SELECT ort, plz, (
".$radius." * SQRT(2*(1-cos(RADIANS(lat)) *
cos(".$lat.") * (sin(RADIANS(lon)) *
sin(".$lon.") + cos(RADIANS(lon)) *
cos(".$lon.")) - sin(RADIANS(lat)) * sin(".$lat.")))) AS Distance
FROM plz_at WHERE
".$radius." * SQRT(2*(1-cos(RADIANS(lat)) *
cos(".$lat.") * (sin(RADIANS(lon)) *
sin(".$lon.") + cos(RADIANS(lon)) *
cos(".$lon.")) - sin(RADIANS(lat)) * sin(".$lat."))) <= ".$umkreis."
ORDER BY Distance
";
// die Ausgabe (vereinfacht)
$sql = mysql_query($query);
while( $erg = mysql_fetch_object($sql) ) {
echo '
<pre>', print_r($erg), '</pre>
';
}
?>