Hilfe: Refresh nach Select-Auswahl

TTlong

Angesehenes Mitglied
Hallo,

für ein neues Webfrontend benötige ich folgendes:

Es gibt ein Formular, wo zwei Drop-Down Menüs untereinander angebracht sind.

Sagen wir im oberen Drop-Down sind Länder und im unteren sollen die dazugehörigen Bundesländer stehen.

Wie realisiere ich es, dass im unteren Drop-Down jeweils nur die Bundesländer angezeigt werden, die auch zu dem Land passen, welches im oberen Drop-Down ausgewählt wurde?

Es müsste ja prinzipiell einen Seiten-Refresh oder einen sonstigen refresh (JavaScript?!) geben, damit die Bundesländer passend in die Liste geladen werden?

Asl Sprache wird auf PHP 5.2.xgesetzt.

Wäre euch dankbar für nen Lösungsansatz.


Gruß TTlong
 
QUOTE (TTlong @ So 31.08.2008, 12:13)Es gibt ein Formular, wo zwei Drop-Down Menüs untereinander angebracht sind.

Sagen wir im oberen Drop-Down sind Länder und im unteren sollen die dazugehörigen Bundesländer stehen.

Wie realisiere ich es, dass im unteren Drop-Down jeweils nur die Bundesländer angezeigt werden, die auch zu dem Land passen, welches im oberen Drop-Down ausgewählt wurde?

Es gibt prinzipiell zwei Möglichkeiten:

(1) Alle Daten auf einmal laden, die obere Liste sofort anzeigen, die untere in einen JavaScript-Array cachen (die untere Tabelle hat im Prinzip drei Spalten: Tabellen-Id, parent-Id, Text). Beim onchange-Ereignis per JavaScript die untere Selectliste neu befüllen.

(2) Beim onchange die Seite mit den Werten zurücksenden, so ist das in server-daten realisiert. Dort die Teilmenge aus der Datenbank laden und geeignet zurücksenden.

(1) hat den Nachteil, daß es nicht ordentlich skaliert: Gibt es sehr viele Werte, dann wird das langsam. In einem speziellen Fall (Staaten, Bundesländer) könnte das aber noch klappen. (2) ist ordentlich skalierbar, man muß allerdings ziemlich mit dem 'Seitenstatus' aufpassen: Jemand bearbeitet ein Formular, wählt ein Land aus - dann ist das kein Speichern, sondern etwas Drittes, da muß sogar die Überprüfung auf Eingabefehler übersprungen werden. Die schon eingegebenen Werte sollten natürlich erhalten bleiben.

Sprich: Im allgemeinen Fall ist die Lösung 2 ziemlich aufwendig gegenüber einer quick and dirty 1.


Im Prinzip läßt sich das auch per Ajax machen. Das ist allerdings nochmals eine andere Logik.

 
Also Variante 1 von jAuer hat natürlich den klaren Vorteil, dass von vornherein alle Daten vorhanden sind und du beim onChange keinen neuen request an den Server senden musst.
Beim Verhältnis 1:n kann die Menge an Bundesländern (in Abhängigkeit von deinen Ländern) aber in schwindelerregende Höhen steigen.
Das würde bedeuten, dass du beim ersten Seitenaufruf vielleicht schon sehr viel "müll" im JavaScript-Teil stehen hast.
Ich würde es also von der Anzahl der Länder abhängig machen:
Wenig Länder => Variante 1
Viele Länder => Variante 3 ( Bundesländer beim obChange per Ajax nachladen )
 
Zurück
Oben