• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

nächst gelegensten ort wählen mittels Geodaten aus datenbank

TecEye

New member
Hy Leute ich brauch mal einen Denkanstoß bitte.

Folgendes Szenario: Ich habe in meiner DB Adressdaten und die dazugehörigen Geokoordinaten LAT und LNG hinterlegt.
Des Weiteren habe ich eine Eingabefeld wo man eine Adresse eingeben kann, nach dem Post (suche) werden mittels meiner Geo-Funktion ebenfalls die Deo-Koordinaten berechnet.
So ich habe bereits eine Funktion gebastelt welche mir die Luftlinie zwischen zwei Geodaten berechnet.

Jetzt will ich aber anhand der Feldeingaben den Ort aus der Datenbank selektieren der am nächsten zu der eingegebenen Adresse liegt, also wo die Entfernung am geringsten ist.

So und jetzt weiß ich nicht mehr weiter :( kann mir da jm helfen?
 
Berechne doch einfach die Luftlinie zu allen Orten aus der DB und nimm' dann den mit dem kleinsten Wert... verstehe dein Problem nicht wirklich.
 
ja luftlinie kann ich berechnen, dann rassel ich die ganze datenbank durch, und wie erhalte ich dann den nächstgelegensten?
 
meine tabelle beinhaltet lat und lng
PHP:
$tf_sql = mysql_query("SELECT name, lat, lng, (".getGeoKm($lat1, $lng1, lat, lng).") AS distance FROM dat_tf_dienste ORDER BY distance");
das ist mein Versuch, aber wie bau ich meine Funktion getGeoKm ein dass er das "distance" zuweist und darauf sortieren kann?
Wie ich es gemacht habe gehts leider nicht. Ist es überhaupt möglich eine funktion in eine SELECT abfrage einzubauen?
 
Zuletzt bearbeitet:
Du bist meinem Link nicht gefolgt? Dort steht ein Query, der genau das macht was du willst. nur das PLZs rausgesucht werden und du eben Orte ausgeben willst. ich hoffe die umstellung schaffst du dann selbst.
Du darfst keine php-funktion einbinden. du musst das mit SQL lösen.

Lg Kasalop
 
Du bist meinem Link nicht gefolgt? Dort steht ein Query, der genau das macht was du willst. nur das PLZs rausgesucht werden und du eben Orte ausgeben willst. ich hoffe die umstellung schaffst du dann selbst.
Du darfst keine php-funktion einbinden. du musst das mit SQL lösen.

Lg Kasalop

Doch schon. Hab es so gemacht
PHP:
$tf_sql = mysql_query("SELECT name, lat, lng, (6372.797 * SQRT(2*(1-cos(RADIANS(lat)) * cos(".$lat1.") * (sin(RADIANS(lng)) * sin(".$lng1.") + cos(RADIANS(lng)) * cos(".$lng1.")) - sin(RADIANS(lat)) * sin(".$lat1.")))) AS distance FROM dat_tf_dienste ORDER BY distance");
sortiert aber nicht
 
War etwas zu kompliziert, hiermit klappts :D
PHP:
$tf_sql = mysql_query("SELECT *, (ACOS( SIN(RADIANS(lat)) * SIN(RADIANS(".$lat1.")) + COS(RADIANS(lat)) * COS(RADIANS(".$lat1.")) * COS(RADIANS(lng) - RADIANS(".$lng1.")) ) * 6372.797) AS distance FROM dat_tf_dienste WHERE name!='' ORDER BY distance");

Ich hoffe dass die abfrage bei ca 30.000 abfragen nicht zulange braucht :)
 
nun noch der standard hinweis von mir:
mysql extension ist deprected und wird ab php6 gar nicht mehr unterstützt. verwendet mysqli (mach achte auf das i) oder gleich PDO

Lg Kasalop
 
Zurück
Oben