Seite 1 von 1

Auswahlfelder voneinander abhängig und von MySQL gefüttert

Verfasst: 18.10.2005 13:35
von konne
Hallo,

ich bin gerade auf der suche nach einem kleinen JavaScript Tool.
Es geht genau gesagt um ein Auswahlformular bestehend aus drei Auswahlfeldern 1, 2 und 3. Hierbei soll 2 von 1 und 3 von 2 abhängig sein. Hinzu kommt eine nötige Datenbankabfrage, um mögliche Auswahloptionen zu erhalten.
Am Beginn soll nur das Auswahlfeld 1 Optionen aus der Datenbank enthalten und 2 und 3 leer sein. Nach Auswahl in 1 füllt sich 2 mit entsprechenden Optionen und nach Auswahl in 2 wird auch 3 gefüllt und übergibt am Ende einen entsprechenden Wert.

Code: Alles auswählen

mögl. Optionen für 1
ID | Name
31 | 31AA
32 | 32BB

mögl. Optionen für 2
ID | Name | IDvon1
21 | 21AA | 31
22 | 22BB | 31
23 | 23CC | 32
24 | 24DD | 32

mögl. Optionen für 3
ID | Name | IDvon2
11 | 11AA | 21
12 | 12BB | 21
13 | 13CC | 22
14 | 14EE | 22
15 | 15FF | 23
16 | 16GG | 23
17 | 17HH | 24
18 | 18II | 24
Ich hoffe ihr versteht mich.

Wer kann mir also mal etwas in der Richtung weiterhelfen oder gar eine fertige Lösung nennen?

Ein gutes Beispiel wäre event. unter http://www.lfvm-v.de/verband/verband.php?Einheit=Verein bei der Vereinssuche genannt.
1 = Bezirk, 2 = KFV, 3 = Verein

Verfasst: 18.10.2005 14:17
von D@ve
also Du kannst mehrere Auswahlfelder voneinander abhängig machen indem Du einfach beide per onchange="" verknüpfst und darin jeweils das andere nach Deinen Vorstellungen änderst. Was das mit der DB zu tun hat verstehe ich noch nicht...

Gruß, Dave

Verfasst: 18.10.2005 17:14
von mristau2k5
Ich empfehle, alle möglichen Daten schon bei der ersten Datenbankabfrage in der Datei auszugeben, das erste Auswahlfeld direkt füllen und für die anderen beiden jeweils JavaScript-Arrays füllen, wenns nicht zu viele Daten sind, ansonsten würde ich per OnChange die das Formular absenden lassen und dann abhängig von der Auswahl das zweite Feld füllen. per JS müsste eben nicht die ganze Seite nochmal geladen werden

Verfasst: 19.10.2005 10:40
von konne
mristau2k5 hat geschrieben:per JS müsste eben nicht die ganze Seite nochmal geladen werden
Genau darum geht es mir im Wesentlichen. Nur habe ich von JS keine richtige Ahnung.
Desshalb dacht ich, kennt vielleicht jemand etwas Fertiges.

Die Daten der Datenbank lese ich schon im Vorfeld in ein Array ein. Nach meinen Beispiel also in etwa so:

Code: Alles auswählen

$array['Auswahl1']['ID']; $array['Auswahl1']['Name'];
$array['Auswahl2']['ID']; $array['Auswahl2']['Name']; $array['Auswahl2']['IDvonAuswahl1'];
$array['Auswahl3']['ID']; $array['Auswahl3']['Name']; $array['Auswahl1']['IDvonAuswahl2'];
Wird in Auswahl1 etwas gewählt, sollen in Auswahl2 die Daten zur Wahl stehen, die die entsprechende 'IDvonAuswahl1' enthalten. Auswahl3 soll nur Werte mit entsprechender 'IDvonAuswahl2' wiedergeben.

Die Datenbank hat also nur indirekt etwas damit zu tun.

Möglicherweise hat nun noch jemand eine Lösung zu meiner Anfrage.

Verfasst: 19.10.2005 19:19
von mristau2k5
Also ich würde die betreffenden Daten für die Auswahlboxen jeweils in JS Arrays eintragen

Code: Alles auswählen

echo "arrayX = new array('Daten1', 'Daten2', 'Daten3')\n";
hier ist noch ein Beitrag von mir dazu

so etwa, jetzt müsste für die Arrays eben jeweils ein eindeutiger Name definiert werden, mit der ID
über OnChange kann man dann jeweils melden, welches Array man haben möchte

Verfasst: 20.10.2005 09:58
von konne
Nun, da werd ich jetzt aber auch nicht so richtig schlau draus. Vor allem weil ich so gut wie keine Ahnung von JS habe.

Kann mir das nicht jemand für mein Beispiel etwas konkreter erklären. Eventuell auch in Anbetracht dessen, dass mein Beispiel ein Beispiel ist.
D.h. es gibt tatsächlich über 300 mögliche Auswahlmöglichkeiten für Auswahlfeld3, etwa 20 für Auswahlfeld1 und Auswahlfeld2 kommt nicht in allen Fällen vor.

Noch genauer wird das ganze, wenn ihr euch das in der onChange-Variante, wie ich es Momentan schon verwirklicht habe, mal anseht. Auf http://clubs.korinet.de geht es um Fußballvereine, -kreise, -bezirke und -verbände.

Die Auswahl sollte dann möglichst ohne Neuladen der Seite funktionieren.

Jetzt vielleicht noch Vorschläge???