Warum werden bei onChange="this.form.submit()" alle Variablen mit "0" besetzt?

sharmuur

Mitglied
Hallo,

in meinem PHP-skript habe ich ein FORM und innerhalb des FORMs habe ich Auswahllisten, wobei die Inhalte von diesen Auswahllisten voneinander abhängig sind. ZB. habe ich die folgenden Auswahllisten Auswahl_Liste 1, Auswahl_Liste 2, Auswahlliste 3

Auswahl_Liste 1
1
2
3

Auswahl_Liste 2
a1
b1
a2
b2
a3
b3

Auswahlliste 3
a1_1
a1_2
a1_3
.
.

Wenn ich bei der Auswahl_Liste 1 die Zahl 1 wähle dann bekomme ich in der Auswahl_Liste 2 den Listeninhalte a1 und b1 angezeigt. Wenn ich in der Auswahl_Liste 2 a1 wähle bekomme ich in der Auswahlliste 3 a1_1, a1_2 und a1_3 angezeigt usw.. Damit die Auswahlisteninhalte abhängig von den anderen geändert werden müssen(=das script sollte mit den ausgewählten $_POST['Variablen'] neugeladen) habe ich bei jedem select element onChange="this.form.submit()" eingebaut.

Aber da bekomme ich ein Problem. Sobald ich einen Wert bei der ersten Auswahlliste wähle, wird das Skript neugeladen und werden allee übrigen $_POST['Variablen'] für die restlichen Auswahllisten mit 0 belegt.
Und das zweite Problem ist: bei der If Bedingung für die nicht ausgewählten Auswahllisten: If(empty($_POST['var'])) bekomme ich false, was zur falschen Ergebnissen führt . Ich glaube hier wird 0 als ein integer Wert interpretiert.

Kann jemand mir bitte sagen, wo das fehler liegt?

Danke voraus
sharmuur
 
Zuletzt bearbeitet:
Hi,

da gibt es jetzt aus meiner Warte zwei Möglichkeiten. Entweder baust du dir die Selects alle auf ein Mal auf und verbindest die mit Javascript. Dadurch muß die Seite nicht immer neu geladen werden und die Selects sind trotzdem von einander abhängig. Das kann aber je nach Größe der Selests ein gewaltiger Aufwand beim Aufbau des JS Scripts werden. Die andere Möglichkeit wäre, daß die Selects ihre Werte per GET übergeben und die vorherigen Wahlen immer mitschicken. Dabei spart man sich halt den Aufand, alle Selects mit allen Möglichkeiten vorher für JS aufzubauen.
Als dritte Möglichkeit wäre Ajax zu nennen, um die Daten einzeln nachzuladen ohne die Seite neu laden zu müssen, aber da muß ich passen. Von Ajax hab ich noch keine Ahnung, aber da weiß bestimmt jemand anderes hier eine Lösung.

Das zweite Problem dürfte sich eigentlich von selbst erledigen, wenn das erste gelöst ist, egal auf welche Weise.
 
Zurück