Dynamische Combobox

D

deluxe89

Guest
Ich möchte zwei select-Felder haben. Wenn man beispielsweise im linken eine
Kategorie auswählt, soll sich das rechte Feld entsprechend der Kategorie
ändern(Java). Da ich die Daten vorher mit PHP auslese, muss es dynamisch sein.

Ich habe folgende Arrays mit Daten:
$categories = Linkbox(array)
$categories[Linkebox] = Rechtebox(array();

thx for your posts
deluxe
 
Da bisland noch niemand geantwortet hat, wag ich mich mal ran, denn eigentlich kenne ich PHP kaum. Aber ich denke, dass Du nicht eine programmiertechnische, sondern konzeptionelle Frage stellst.

Mit serverseitigem Konzept (Perl, PHP, .NET):
Sobald in der linken Kategorie der ausgewählte Text verändert wurde, dann solltest Du einen "Postback" zum Server initiieren. Das bedeutet eigentlich nichts anderes als einen (z.B. Java-Script-mässigen) Submit Deines Formulars, worauf der Server die Seite mit einem upgedateten rechten Select Feld liefert.

Mit browserseitigem Konzept (Java, Java-Script)
Hier musst Du alle Daten aller Select Boxen bei dem Browser übergeben, welcher dann mit einer lokalen Scriptsprache (eben z.B. Java-Script) die Dynamik erzeugt.

Beide Wege haben Nachteile:
- Serverseitig:
Was dort mit dem Postback abläuft nennt man eigentlich einen "Roundtrip" zum Server. Das kann bei Besuchern schlichtweg Verwirrung stiften (das Formular schickt sich scheinbar ab, noch nicht submit gedrückt wurde). Mehr als einen, zwei derartiger Roundtrips würde ich nie in eine Seite packen.

- Clientseitig:
Bei langsamen Modenanbindungen (oder riesigen Auswahlmengen für die Select Boxen) lädt natürlich die Seite enorm langsam.

Generelles Problem und Lösungsvorschlag:
Beide Varianten haben übrigens das Problem, dass diese bei abgeschaltetem Java-Script auf dem Client nicht funktionieren. Typischerweise umgeht "man" also das Problem mit der dynamischen Aktualisierung von Abhängigkeiten durch einen "Wizard"-Lösungsansatz. Der ("Weiter >>")-Button löst zwar auch einen Roundtrip zum Server aus, aber für den Benützer/die Benützerin ist das transparenter. Wenn das mit einem (<< "Zurück") Knopf auf der Folgeseite ergänzt wird, ist die Lösung gar ergonomisch unschlagbar.
cool.gif
 
Zurück
Oben