Guten Morgen Gemeinde.
Da ich kein sondeliches Mathegenie bin, habe ich eine Umkreisabfrage via Google genommen. Diese funktioniert aber nur bedingt.
Ich habe z.Z. 3 Testeinträge in der DB. 2x mit PLZ 04838 und 1x mit 04808.
Wenn ich nach 04838 abrufe, mit einem Umkreis von 15km, dann list er alles korrekt aus.
Er fängt mir 0 km entfernung an und liest alle Einträge aus.
Frage ich jetzt nach der 04808 , dann liest er alle nur nicht den mit 0 km.
Die Abfrage sieht wie folgt aus:
Kann mir da jemand weiterhelfen?
Danke
Da ich kein sondeliches Mathegenie bin, habe ich eine Umkreisabfrage via Google genommen. Diese funktioniert aber nur bedingt.
Ich habe z.Z. 3 Testeinträge in der DB. 2x mit PLZ 04838 und 1x mit 04808.
Wenn ich nach 04838 abrufe, mit einem Umkreis von 15km, dann list er alles korrekt aus.
Er fängt mir 0 km entfernung an und liest alle Einträge aus.
Frage ich jetzt nach der 04808 , dann liest er alle nur nicht den mit 0 km.
Die Abfrage sieht wie folgt aus:
PHP-Code:
$var = explode(" ", $_POST['umkreis']);
$umkreis = $var[0];
$radius = '6378.137';
if($_POST['plz'] != '' ) { $abfrage = "patrol_postcode LIKE '".$_POST['plz']."%'"; }
elseif($_POST['ort'] != '') { $abfrage = "patrol_place LIKE '".$_POST['ort']."%'"; }
else { $abfrage = "patrol_postcode = ''"; }
#lat und lon von PLZ holen
$geo = mysql_query("SELECT lat, lon FROM tankstelle WHERE ".$abfrage." LIMIT 0,1");
$geo_anzahl = mysql_num_rows($geo);
$geo_daten = mysql_fetch_object($geo);
//print_r($geo_daten);
if($geo_anzahl == '0') {
echo "Keine Daten gefunden";
} else {
#lat und lon umrechnen
$lon = $geo_daten->lon / 180 * M_PI;
$lat = $geo_daten->lat / 180 * M_PI;
#PLZ raussuchen
$sql = "SELECT *, (
".$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 `tankstelle`
HAVING Distance <= '".$umkreis."'
ORDER BY Distance ";
# Ausgabe der PLZ
$result = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_object($result) ) {
$preis = mysql_fetch_object($sql);
echo '<pre>', print_r($row), '</pre>';
echo $row->patrol_postcode." ".$row->patrol_place."<br />";
}
}
Danke
Kommentar