Postleitzahl eingeben, dann alle Adressen ausgeben?
Oliver Linnhoff
- programmiertechnik
Hallo Leute,
ich habe da mal wieder ein kleines Problem, welches ich mit meinen *anfänger* Kenntnissen nicht zu lösen vermag.
Ich würde gerne eine Funktion auf meiner Homepage implementieren, wo jemand seine Postleitzahl eingibt, und ihm dann alle "fachhändler" in einem Bestimmten Umkreis angezeigt werden.
Ist das sehr schwer?
Danke,
Oliver
Hallo Oliver,
die technische Umsetzung dürfte weniger das Problem sein (bei wenigen etvl. JavScript, sonst PHP odgl.). Problematisch ist eher die Zuordnung von den PLZ-Bereichen. Je nach dem, wie dich die Händler sitzen musst Du für extrem viele PLZs einzeln deren Treffer definieren. Hast Du hingegen nur 10/15 Händler in Deutschland, so sind die Gebiete des einzelnen größer und leichter/grober absteckbar. Hast Du hingegen in München schon drei - viel Spaß.
Grüße aus Würzburg
Julian
ich habe da mal wieder ein kleines Problem, welches ich mit meinen *anfänger* Kenntnissen nicht zu lösen vermag.
Ich würde gerne eine Funktion auf meiner Homepage implementieren, wo jemand seine Postleitzahl eingibt, und ihm dann alle "fachhändler" in einem Bestimmten Umkreis angezeigt werden.
Ist das sehr schwer?
Hallo Oliver,
kommt drauf an, wie genau Du es mit dem Umkreis nehmen willst.
Du kannst z.B. die eingegebene Postleitzahl als Parameter an ein PHP-Skript übergeben, die erste Stelle der Plz nehmen und dort ne Datenbankabfrage machen in der Art
SELECT name FROM haendler WHERE plz LIKE '$plz%'
Dies ist mal ein Ansatz, es gibt bestimmt auch noch andere Möglichkeiten....ich kenn mich allerdings mit der Struktur der Postleitzahlen nicht aus.
Wenn Du es ganz genau machen willst, dann bräuchtest Du irgendwie Koordinaten, mit denen Du rechnen kannst. Das kann dann natürlich auch ein von Dir festgelegtes Koordinatensystem sein.
Viele Grüsse
Kerstin
Tach auch,
kommt drauf an, wie genau Du es mit dem Umkreis nehmen willst.
Du kannst z.B. die eingegebene Postleitzahl als Parameter an ein PHP-Skript übergeben, die erste Stelle der Plz nehmen und dort ne Datenbankabfrage machen in der Art
SELECT name FROM haendler WHERE plz LIKE '$plz%'
Hm, ich habe meine Zweifel dass das ausreicht. Es wird ja immer Gegenden geben wo in der direkten Nachbarschaft auch die erste Ziffer unterschiedlich ist. Die wuerdest Du mit Deiner Methode dann nicht erreichen.
Dies ist mal ein Ansatz, es gibt bestimmt auch noch andere Möglichkeiten....ich kenn mich allerdings mit der Struktur der Postleitzahlen nicht aus.
Ich auch nicht, aber einer meiner ersten Gedanken ist dass es irgendwo einen Uebergang zwischen 2xxxx und 3xxxx geben muss wo diese angrenzend sind. Was Deinen obigen Vorschlag in meinen Augen sehr problematisch macht.
Wenn Du es ganz genau machen willst, dann bräuchtest Du irgendwie Koordinaten, mit denen Du rechnen kannst. Das kann dann natürlich auch ein von Dir festgelegtes Koordinatensystem sein.
Oder irgendeine Art Datenbank die weiss welche PLZbereiche an einen bestimmten angrenzen.
Gruss,
Armin
Hallo,
kommt drauf an, wie genau Du es mit dem Umkreis nehmen willst.
Du kannst z.B. die eingegebene Postleitzahl als Parameter an ein PHP-Skript übergeben, die erste Stelle der Plz nehmen und dort ne Datenbankabfrage machen in der Art
SELECT name FROM haendler WHERE plz LIKE '$plz%'
Hm, ich habe meine Zweifel dass das ausreicht. Es wird ja immer Gegenden geben wo in der direkten Nachbarschaft auch die erste Ziffer unterschiedlich ist. Die wuerdest Du mit Deiner Methode dann nicht erreichen.
Stimmt, da hab ich noch gar nicht dran gedacht und ausserdem ist der Umkreis auch sehr gross, wenn man nur nach der ersten Stelle sucht. War mal die erste Idee.
Oder irgendeine Art Datenbank die weiss welche PLZbereiche an einen bestimmten angrenzen.
Das stell ich mir aber relativ kompliziert vor, geht das nicht schon in Richtung PL/SQL? Und das dann z.B. in PHP/MySQL umzuschreiben, dürfte nicht ganz einfach sein. Aber wie Julian auch gesagt hat, kommt es eben auf die Anzahl der Händler an und wie die verteilt sind.
viele Grüsse
Kerstin
Hi Kerstin,
Oder irgendeine Art Datenbank die weiss welche PLZbereiche an einen
bestimmten angrenzen.
Das stell ich mir aber relativ kompliziert vor, geht das nicht schon in
Richtung PL/SQL?
Eine Abfrage einer Tabelle ist und bleibt erst mal eine Abfrage - dafür reicht normales SQL.
PL/SQL ist eine Sprache, die sich dafür eignet, in ihr geschriebenen Code _in_ der Datenbank selbst _abzuspeichert_ und dessen Ausführung an Ereignisse der Datenbank selbst zu _binden_.
Stell Dir mal vor, Du willst eine Protokollfunktion realisieren, welche Dir festhält, wann eine Anwendung lesend bzw. schreibend auf welche Datensätze einer Tabelle zugegriffen hat - und das für beliebige Anwendungen, deren Quelltext Du weder kennst noch ändern darfst! Dir "gehören" aber die Tabellen - Du bist der Administrator der Datenbank.
In einem solchen Falle könntest Du eine entsprechende Funktion in PL/SQL schreiben (welche ihre Protokolldaten dann in eine eigene Log-Tabelle INSERTed) und den Aufruf dieser Funktion per Trigger an die entsprechenden Ereignisse (nämlich das SELECT bzw. INSERT der jeweiligen Tabelle) binden.
Die Anwendungen merken gar nicht, daß sie "belauscht" werden - das geht sie auch gar nichts an. (Genau wie es ein CGI-Skript nichts angeht, welche Protokollinformationen ein Webserver über deren Aufrufe mitführt.)
So etwas wäre eine Anwendung, für die PL/SQL prima geeignet ist - und das mit mySQL nachzubauen stelle ich mir (mit allerdings nur rudimentären mySQL-Kenntnissen) in der Tat nicht trivial vor.
Viele Grüße
Michael
Hallo Michael
Oder irgendeine Art Datenbank die weiss welche PLZbereiche an einen
bestimmten angrenzen.
Das stell ich mir aber relativ kompliziert vor, geht das nicht schon in
Richtung PL/SQL?
Eine Abfrage einer Tabelle ist und bleibt erst mal eine Abfrage - dafür reicht normales SQL.
Vielleicht hab ich mich etwas ungeschickt ausgedrückt, ich wollte eigentlich nur sagen, dass es meines Wissens mit einer einfachen SQL-Abfrage nicht möglich ist (vielleicht irre ich mich da ja auch), aus einer Tabelle, in der die Plz und die angrenzenden Postleitzahlen gespeichert sind, die PLZ-Bereiche zwischen dem Ort des Kunden und des Händlers zu erfahren. Vor allem, wenn man vorher nicht weiss, wieviel Bereiche dazwischen liegen.
Vielleicht denk ich ja auch viel zu kompliziert, aber ich hätte dann von der eingegebenen plz die angrenzenden bereichen abgefragt und von jedem diesem Bereich wieder die angrenzenden Bereiche, bis ich an der Grenze des gewünschten Umkreises angelangt bin und alle Postleitzahlen hab, in denen ich nach Händlern suchen kann. Ich bin davon ausgegangen, das dafür Rekursionen benötigt werden, die SQL nicht bietet, die man aber mit PL/SQL realisieren kann. Deshalb bin ich da auch auf PL/SQL gekommen, weil ich was ähnliches mal so gelöst hab.
viele Grüsse
Kerstin
Hi Kerstin,
Vielleicht hab ich mich etwas ungeschickt ausgedrückt, ich wollte
eigentlich nur sagen, dass es meines Wissens mit einer einfachen
SQL-Abfrage nicht möglich ist (vielleicht irre ich mich da ja auch),
aus einer Tabelle, in der die Plz und die angrenzenden Postleitzahlen
gespeichert sind, die PLZ-Bereiche zwischen dem Ort des Kunden und
des Händlers zu erfahren. Vor allem, wenn man vorher nicht weiss,
wieviel Bereiche dazwischen liegen.
da stimme ich Dir ja völlig zu.
Nur würde ich in diesem Falle nicht als erstes eine neue Programmier-
sprache vorschlagen, sondern die vorliegenden Datenstrukturen hinter-
fragen.
Denn wenn die erforderliche Information _überhaupt_nicht_ verfügbar
ist, hilft die beste Programmiersprache nichts.
Ist sie aber verfügbar, dann ist es effizienter, sie so darzustellen,
wie die Anwendung das verlangt, als um eine mißratene Informations-
darstellung aufwändig herum zu programmieren. (Schon alleine, weil
ich keine Lust hätte, in der Dokumentation detailliert zu erklären,
wieso das alles so kompliziert und wartungsunfreundlich ist ... ;-)
Vielleicht denk ich ja auch viel zu kompliziert, aber ich hätte dann
von der eingegebenen plz die angrenzenden bereichen abgefragt und von
jedem diesem Bereich wieder die angrenzenden Bereiche, bis ich an der
Grenze des gewünschten Umkreises angelangt bin und alle Postleitzahlen
hab, in denen ich nach Händlern suchen kann. Ich bin davon ausgegangen,
das dafür Rekursionen benötigt werden, die SQL nicht bietet, die man
aber mit PL/SQL realisieren kann. Deshalb bin ich da auch auf PL/SQL
gekommen, weil ich was ähnliches mal so gelöst hab.
Ich habe Deinen Vorgehensweise ja auch gar nicht kritisieren wollen.
Mit meiner Vorgehensweise bin ich einfach zu einem anderen Ergebnis
gekommen ...
Viele Grüße
Michael
Hallo Michael,
Ich habe Deinen Vorgehensweise ja auch gar nicht kritisieren wollen.
Mit meiner Vorgehensweise bin ich einfach zu einem anderen Ergebnis
gekommen ...
Kritik ist ja nix schlechtes und wenn sie konstruktiv und angebracht ist, lernt man dadurch ja auch ne Menge und dafür ist das Forum ja da :-)
viele Grüsse
Kerstin
Hi!
Sehe das genau wie Julian, ich würde mir einmal die Arbeit machen, die Postleutzahlen von Hand zuzuweisen. Was Dir dabei helfen könnte:
http://www.deutschepost.de/postdirekt/index.html?inhalt=/postdirekt/produkte/plzinfo.html
http://www.deutschepost.de/postdirekt/index.html?inhalt=/postdirekt/produkte/plzkarte.html
Wo bei ich bei letzterem etwas stutze, klickt mal auf "Ausschnitt vergrößern" - woher weiß die Post um Himmels Willen das ich in Aachen bin??? Geht das bei Euch auch??? Wie machen die das????
Viele Grüße
Andreas
Hallöle,
Wo bei ich bei letzterem etwas stutze, klickt mal auf "Ausschnitt vergrößern" - woher weiß die Post um Himmels Willen das ich in Aachen bin??? Geht das bei Euch auch??? Wie machen die das????
Das ist Zufall. Bei mir kommt auch die Karte mit Aachen, aber da komm ich *definitiv* nicht her - eher aus dem südlichsten Süden der Republik. War also wohl eher ein Glückstreffer...
Liebe Grüße,
Nicole
Hallo Andreas,
Wo bei ich bei letzterem etwas stutze, klickt mal auf "Ausschnitt vergrößern" - woher weiß die Post um Himmels Willen das ich in Aachen bin??? Geht das bei Euch auch??? Wie machen die das????
Könnte es einfach sein, dass Orte mit "A" in alphabetisch sortieren Listen vorne stehen? Und dort wiederum nach alphabet sortiert die mit "a" an zweiter Stelle ganz vorne, und dann mit "c" an dritter Stelle? Wieviel Orte gibt's denn, die durch ihre drei Anfangsbuchstaben vor Aachen stehen?
Grüße aus Würzburg (!= Aachen)
Julian
http://www.ihre-vorsorge.de/tool_beratungsstellen/index.php
Hier liegt wie bei x-scout.de etc. eine geographische PLZ-Datenbank dahinter:
01067;Dresden;13.7194;51.0626
01069;Dresden;13.7383;51.0392
01097;Dresden;13.7428;51.0687
01099;Dresden;13.8301;51.0957
01108;Dresden;13.7893;51.1566
01109;Dresden;13.7707;51.1238
01127;Dresden;13.7347;51.0815
etc.
Dann muss Du noch eine SQL-Abfrage zimmern, aber der "Satz des Pythagoras" dürfte aus dem Mathematikunterricht bekannt sein ;-)
Peter M.
Hallo Leute,
ich habe da mal wieder ein kleines Problem, welches ich mit meinen *anfänger* Kenntnissen nicht zu lösen vermag.
Ich würde gerne eine Funktion auf meiner Homepage implementieren, wo jemand seine Postleitzahl eingibt, und ihm dann alle "fachhändler" in einem Bestimmten Umkreis angezeigt werden.
Ist das sehr schwer?
Danke,
Oliver
Hi!
01067;Dresden;13.7194;51.0626
01069;Dresden;13.7383;51.0392
01097;Dresden;13.7428;51.0687
01099;Dresden;13.8301;51.0957
01108;Dresden;13.7893;51.1566
01109;Dresden;13.7707;51.1238
01127;Dresden;13.7347;51.0815
etc.
Und woher bekommt man so eine Tabelle?
Dann muss Du noch eine SQL-Abfrage zimmern, aber der "Satz des Pythagoras" dürfte aus dem Mathematikunterricht bekannt sein ;-)
Was hat das mit dem "Satz des Pythagoras" zu tun? Nicht eher mit sin und cos?
Grüße
Andreas
Hallo!
Hab zwar noch nichts gefunden, aber ich habe mich aus versehen bei einem Suchbegriff(Datenbak) vertippt, und dann das:
^
Ihr ursprüngliches Suchwort: PLZ Datenbak mit Koordinaten download wurde falsch geschrieben und ergab 0 Resultate.
Stattdessen wurde das korrigierte Suchwort PLZ Datenbank mit Koordinaten download benutzt und führte zu den unten aufgelisteten Ergebenissen.
Nicht schlecht, oder?
Grüße
Andreas
Hi!
01067;Dresden;13.7194;51.0626
01069;Dresden;13.7383;51.0392
01097;Dresden;13.7428;51.0687
01099;Dresden;13.8301;51.0957
01108;Dresden;13.7893;51.1566
01109;Dresden;13.7707;51.1238
01127;Dresden;13.7347;51.0815
etc.
Und woher bekommt man so eine Tabelle?
Dann muss Du noch eine SQL-Abfrage zimmern, aber der "Satz des Pythagoras" dürfte aus dem Mathematikunterricht bekannt sein ;-)
Was hat das mit dem "Satz des Pythagoras" zu tun? Nicht eher mit sin und cos?
Grüße
Andreas