RageNo1
Erfahrenes Mitglied
Hallo Leute,
ich bastel gerade an einer Umkreissuche.
Ich habe viele Beiträge dazu gelesen und habe es auch soweit hinbekommen dass alle Orte ausgegeben werden welche unter Entfernung XX zur Postleitzahl fallen.
Vorab zur Info:
Ich habe eine Datenbank PLZ mit den Längen und Breitenangeben.
Dazu kommt dann die Datenbank mit verschiedenen Orten, diese Orte haben ebenfalls Längen- und Breitenangaben.
Zunächst wird per GET die PLZ übergeben und diese wird in PLZ gesucht.
Dann folgen Berechnungen. Mit den Werten wird dann in der Datenbank Orte alles ausgegeben was innerhalb 50 km liegt ($entfernung).
Zum Problem:
Es werden korrekte Orte ausgegeben.
Nur leider bekomme ich es nicht hin in die Abfrage zu integrieren dass der nächt gelegene Ort ausgegeben wird. Die Ort werden zufällig ausgegeben.
Wie müsste man jetzt die Abfrage umstellen damit die nächsten Orte als erstes ausgegeben werden? (ORDER BY ... oder sowas!?)
Gruß Ragey
ich bastel gerade an einer Umkreissuche.
Ich habe viele Beiträge dazu gelesen und habe es auch soweit hinbekommen dass alle Orte ausgegeben werden welche unter Entfernung XX zur Postleitzahl fallen.
Vorab zur Info:
Ich habe eine Datenbank PLZ mit den Längen und Breitenangeben.
Dazu kommt dann die Datenbank mit verschiedenen Orten, diese Orte haben ebenfalls Längen- und Breitenangaben.
Zunächst wird per GET die PLZ übergeben und diese wird in PLZ gesucht.
Dann folgen Berechnungen. Mit den Werten wird dann in der Datenbank Orte alles ausgegeben was innerhalb 50 km liegt ($entfernung).
PHP:
...
$connect2 = mysql_query("SELECT * FROM plz WHERE plz = '".$_GET[plz]."'");
$showplz = mysql_fetch_array($connect2);
$ursprungsbreite = $showplz[lat];
$ursprungslaenge = $showplz[lon];
$entfernung = '50';
$alpha = 180*$entfernung/(6378137/1000*3.14159);
$geo1 = $ursprungsbreite-$alpha;
$geo2 = $ursprungsbreite+$alpha;
$geo3 = $ursprungslaenge-$alpha;
$geo4 = $ursprungslaenge+$alpha;
$connectb = mysql_query("SELECT * FROM orte WHERE (lat >= '".$geo1."') AND (lat <= '".$geo2."') AND (lon >= '".$geo3."') AND (lon <= '".$geo4."')");
while($showb = mysql_fetch_array($connectb)) {
echo $showb[name].'<br />'.$showb[strasse].' • '.$showb[plz].' '.$showb[stadt].'<br />'.$showb[tel].'<br /><br />';
}
Zum Problem:
Es werden korrekte Orte ausgegeben.
Nur leider bekomme ich es nicht hin in die Abfrage zu integrieren dass der nächt gelegene Ort ausgegeben wird. Die Ort werden zufällig ausgegeben.
Wie müsste man jetzt die Abfrage umstellen damit die nächsten Orte als erstes ausgegeben werden? (ORDER BY ... oder sowas!?)
Gruß Ragey