# selektieren mit javascript



## Franklin (26. Jan 2011)

Schönen guten Tag...
Zunächst möchte ich einmal schildern, um was es in meinem Programm geht...

Ich besitze eine Datenbank mit ca. 30 Tabellen, welche untereinander verknüpft sind. Diese werden ausgelesen und in eine JSP in verschiedene "select" geladen - das funktioniert ohne Probleme.

3 dieser Tabellen haben eine besondere Bedeutung, da ich diese in Relation bringen muss.
Ich habe die Verknüpfung bereits definiert, hier:


```
ResultSet rs = stmt.executeQuery("select B.maschber_nr, B.maschber_bez "
                        + "from trans_masch_bereich A, maschinen_bereich B "
                        + "where A.masch_nr = 1 and A.maschber_nr = B.maschber_nr");
```

So, nun zu meinem Problem...
Wie kann ich in meiner JSP im Maschinenbereich nur jene anzeigen, welche zur jeweiligen Maschine gehören? Ich würde jetzt gerne ein JavaScript schreiben, welches mir die Maschinenbereiche in einer "select" auflistet, die passend zur Maschine sind.

Habe bereits auf SelfHTML geschaut, hier werden aber nur Beispiele mit radiobutton aufgezeigt, die mir aber nichts bringen...
Hat jemand eine Ahnung wie ich diese Relationen herstellen kann?

Natürlich kann ich auch eine 2te JSP erstellen, die die selektierte Maschine übernimmt und die passenden Bereiche in die "select" Box lädt, dies ist aber nur eine Notlösung...

Ich hoffe ich habe mich klar ausdrücken können, wenn nicht -> bitte sagen...
Danke im Voraus


----------



## Franklin (28. Jan 2011)

Kennt sich da niemand aus?
Dann muss ich das wohl mit einer zweiten JSP realisieren 
Danke trotzdem


----------



## ARadauer (28. Jan 2011)

Ich hab das geführl du vermischt JSP mit JavaScirpt ;-)

Also wo ist das Problem was willst du machen? ich habs ehrlich nicht ganz verstanden...



> Wie kann ich in meiner JSP im Maschinenbereich nur jene anzeigen, welche zur jeweiligen Maschine gehören? Ich würde jetzt gerne ein JavaScript schreiben, welches mir die Maschinenbereiche in einer "select" auflistet, die passend zur Maschine sind.



ja mhn wie sieht deine jsp aus? du kannst dir natürich den entsprechenden javascript code mit jsp erzeugen...
dann kannst du zb bei änderung der auswahlbox einen request absetzen und dann die entsprechenenden werte laden... oder cooler mit jquery und ajax daten vielicht als json dynamisch nachladen...


----------



## Franklin (28. Jan 2011)

Ich habe eine JSP, in der ich 2 select Felder habe.
Beide werden mit Datensätzen aus meiner Access DB gefüttert.

Hier taucht das Problem auf...
Ich habe mehrere Maschinen, die aber nicht alle den selben Maschinenbereich haben.
Jetzt muss ich irgendwie dynamisch die richtigen Maschinenbereiche aus der Datenbank laden, wenn ein klick auf eine Maschine aus der ersten Selectbox gemacht wird.

Hier der Code mit dem ich die DB auslese und die Felder befülle:


```
<%

                        //Worker ist die Java Klasse mit DB-Verbindungsaufbau, Auslesen der Listen,...
                                worker.connect();
                                List<Maschine> maschine = worker.getMaschine();
                                for (Maschine ma : maschine) {
                    %>

                //onclick="alert(this.value)" --> gibt die aktuelle ID aus
                // nur zu testzwecken benötigt, erste schritte mit ids realisiert

                    <option value=" <%=ma.getMasch_nr()%>" >
                        <%=ma.getMasch_bez()%>
                    </option>
                    <%
                                }
                    %>
```

Meinen Maschinenbereich hätte ich hier gerne dynamisch befüllt:


```
<%
                                Worker worker = new Worker();
                                worker.connect();

                                List<Maschinen_bereich> maber = worker.getMaschinen_bereich();
                                for (Maschinen_bereich mab : maber) {
                    %>
                    <option value="<%= mab.getMaschber_nr()%>">

                        <%= mab.getMaschber_bez()%>
                    </option>
                    <%
                                }
                    %>
```

Gehe ich Recht in der Annahme, dass ich die Beziehungen mit den NRs der beiden Tabellen realisieren kann? 

Das ganze geht ja mit JavaScript, wenn ich mich nicht ganz vertan haben. 
Oder irre ich mich?


----------



## maki (28. Jan 2011)

Mal so nebenbei: Du erstellt einen Thread namens "selektieren mit javascript" im Unterforum "Netzwerkprogrammierung", dann zeigt du Java/SQL Code? 

*verschoben*


----------



## Franklin (28. Jan 2011)

Die Datenbank wird später über diese Seite mit einem Handy über WLAN beschrieben....passt das nicht hier rein? 
Sry


----------



## chalkbag (28. Jan 2011)

Hallo,

entschuldige, ich stehe immer noch auf der Leitung.

Du willst wenn du aus select box 1 einen Wert auswählst, dass die Options der Select box 2 geändert werden? 

Select 1:  --->   führt zu Werte von Select 2:

a     --->               a1, a2, a3

b     --->               b1, b2, b3, b4, b5

c     --->               c1, c2

Hab ich richtig verstanden?

Lösungsideen:

1. JS: du hast mehre selectboxen 2 und macht sie per js sichtbar/unsichtbar
-> könnte Probleme mit dem Design evtl geben

2. JS: du speicherst den wert von select 1 in einer request  variablen (sowie alle anderen Werte) und machst einen Pagereload

3. JSP: quasi wie in 2. nur eben über den JSP Weg (würd ich bevorziehen)

Grüße


----------



## Franklin (28. Jan 2011)

ich werds mal versuchen....ich meld mich wenn ich näheres weis....

also meinst du, dass das mit der 2ten JSP am klügsten wäre?
ist auch meiner Meinung nach die einfachste Lösung...

danke schonmal


----------



## chalkbag (28. Jan 2011)

Eine zweite JSP Seite brauchst du eigentlich nicht, ich dachte das eher so

(Code angedeutet, Syntax inkorrekt)

```
<select 2...>
<:choose>
<:when test="request.parameter("select").value eq "wert1">
    <options ...>
    <options ..>
<:when test... eq "wert2">
    <options ...>
    <options ..>
<:when else>
<!-- keine Werte -->

...
```

Natürlich würde dieser Weg nur gehen, wenn es wenig Werte für select 1 gibt. Sind es deutlich mehr könntest du mit einer Schleife (<c:forEach) das obrig genannte aus einem Array aufbauen lassen.

Ich hoffe ich war jetzt etwas verständlicher.


----------



## Franklin (31. Jan 2011)

Danke habe gerade ein paar neue JSPs gebastelt 
funktioniert so weit ganz gut...das mit den case anweisungen is so ne Sache bei ca 100 verschiedenen Fällen....^^

Danke für die Antwort, hat mir sehr geholfen :toll:


----------

