jensgebken
Goto Top

Chained select - abhängige dropdowns

hallo gemeinschaft

habe zwei dropdown menüs, die voneinander abhängig sind

es sind die menüs
gebiet
reederei


das ist die tab reederei
id_Reederei id_SearchResult ReedereiID ReedereiName
gebiet
id_Destination id_SearchResult DestinationID DestinationName

könnt ihr mir dabei helfen, wie ich das umsetzen kann, dass wenn man z.b. im menü gebiet ein gebiet auswählt, dass dann das menü reederei entsprechend geändert wird
bzw. wenn man ein gebiet aussucht, dass dann das dropdown reederei geändert wird

Content-Key: 302672

Url: https://administrator.de/contentid/302672

Printed on: April 19, 2024 at 07:04 o'clock

Member: wiesi200
wiesi200 Apr 23, 2016 at 15:45:39 (UTC)
Goto Top
Hallo,

Ich würde im Endeffekt versuchen die menüelemente per JavaScript bzw Ajax zu laden.
PHP wird schwer bis unmöglich.
Member: jensgebken
jensgebken Apr 23, 2016 updated at 15:56:30 (UTC)
Goto Top
... und wenn man das formular neu lädt - macht das sinn

es ist noch ein drittes feld hinzu gekommen ship
id_ship id_SearchResult ShipID ShipName

alle sind verbunden über die id_SearchResult

wie machen die jungs das denn http://www.e-hoi.de/
Member: wiesi200
Solution wiesi200 Apr 23, 2016 at 16:17:18 (UTC)
Goto Top
Per Ajax?
Nur so kann man eine einzelne Webseiten Objekte Aktualisieren ohne die ganze Seite kpl. neu zu laden.
PHP ist ja Serverseitig, wie sollte es dann auf Browsereingaben auf diese Art reagieren können.?
Member: jensgebken
jensgebken Apr 23, 2016 at 16:50:44 (UTC)
Goto Top
Kannst du mir dabei helfen
Member: wiesi200
wiesi200 Apr 23, 2016, updated at Mar 14, 2023 at 11:00:18 (UTC)
Goto Top
Ich bin jetzt zwar leider auch nicht so der JavaScript Profi.
Aber die links sollte dir zumindest weiter helfen können.

Aktualisieren von DIV Containern per JavaScript

https://api.jquery.com/change/
Member: wiesi200
wiesi200 Apr 23, 2016 at 17:16:53 (UTC)
Goto Top
Hey,

das sollte genau das sein was du brauchst

https://css-tricks.com/dynamic-dropdowns/
Member: jensgebken
jensgebken Apr 23, 2016 at 17:57:21 (UTC)
Goto Top
So etwas habe ich schon gefunden Problem ist nur das ist nur einseitig ist-ich möchte ja entweder zuerst im Feld A oder im Feld B eine Auswahl treffen
Member: wiesi200
wiesi200 Apr 23, 2016 at 18:10:15 (UTC)
Goto Top
Ist doch im Endeffekt das selbe in grün. Nur das du zwei unterschiedliche Abfragen hast.
Member: jensgebken
jensgebken Apr 23, 2016 at 18:27:08 (UTC)
Goto Top
hi
ich hab noch ein kleines problem

wenn ich das formular absende, dann brauche ich die
id_Reederei
id_Destination

für das erstellen der abhängigen dropdowns brauche ich aber die id_searchresult

wie würdes tdu es machen
Member: wiesi200
wiesi200 Apr 23, 2016 updated at 18:47:08 (UTC)
Goto Top
Mensch, die ID's kann man doch anpassen.

Schau dir doch mal den Letzten Link von mir an.
https://css-tricks.com/dynamic-dropdowns/

$("#first-choice").change(function() {  
  $("#second-choice").load("getter.php?choice=" + $("#first-choice").val());  
});

Daraus wird dann bei dir

$("#id_Reederei").change(function() {  
  $("#id_Destination").load("getter.php?reederei=" + $("#id_Destination").val());  
});
$("#id_Destination").change(function() {  
  $("#id_Reederei").load("getter.php?destination=" + $("#id_Reederei").val());  
});

In der getter.php die du auch in dem Link findest musst du dann je nach dem welcher Parameter gefüllt ist eine entsprechende SQL Abfrage ausführen die dir die Passenden Werte zurück gibt.
Member: jensgebken
jensgebken Apr 23, 2016 updated at 19:30:16 (UTC)
Goto Top
... aber ich muss doch vergleichen nach id_searchresult
Member: wiesi200
wiesi200 Apr 23, 2016 at 19:33:39 (UTC)
Goto Top
Für was ist denn dein Search Resultat überhaupt da, bzw nach was musst du da vergleichen?

Erklär doch bitte das 100% genau was du da machst? Wie die Daten aussehen? Und alles andere was wichtig ist, ohne Abkürzungen.
Member: jensgebken
jensgebken Apr 23, 2016 updated at 20:18:39 (UTC)
Goto Top
okay

ich habe drei dropdowns, die in abhängigkeit zueinander stehen

nun möchte ich z.b. im feld ship - ein ship auswählen - und dann sollen z.b. die felder destination und reederei entsprechend gefiltert werden, so dass im feld destination nur die gebiete angezeigt werden, in denen das schiff fährt und im feld reederei halt dann nur noch die reederei

wenn ich nach reset (alle dropdowns wieder lösche) im feld reederei eine auswähle, dann sollen nu im feld ship nur die schiffe angezeigt werden, die zur reederei gehören und im feld gebiet nuir die gebiete in denen die reederei reisen anbietet

ich habe z.b. folgende datensätze in der reederei
id_Reederei_______id_SearchResult______ReedereiID________ ReedereiName
8128_____________8196_________________8__________________Cunard
8130_____________8198_________________10_________________Phoenix

gebiet
id_Destination__ id_SearchResult ____DestinationID ___DestinationName
18180__________8196________________72 _____________Transatlantik
18182 __________8198 _______________67_____________ Schwarzes Meer
18183 __________8198 _______________69_____________ Nordland
18186 __________8200 _______________69 _____________ Nordland
18188 __________8202 _______________69 _____________ Nordland
18190 __________8204 _______________69_____________ Nordland
18192 __________8206 _______________69_____________ Nordland

id_ship________id_SearchResult _____ShipID_________ShipName
8194 __________8196 _______________68_____________ Queen Mary 2
8196 __________8198_______________ 164 _____________ Albatros 1
8198 _________8200 -_______________164 -______________Albatros
8203_________ 8205 ________________35 _______________Celebrity

und ich brauche nachher die DestinationID ShipID und ReedereiID
Member: wiesi200
wiesi200 Apr 23, 2016 updated at 20:59:24 (UTC)
Goto Top
Ich find schon mal deinen Datenbankaufbau etwas merkwürdig. Bzw. ich verstehe sie nicht.

Nehmen wir die Tabelle reederei
Warum hast du da id_Reederei und ReedereiID drinnen? Und was ist id_SearchResult?
Den Punkt ReedereiName den würd ich separieren in eine Stammdatentabelle, wo nur eine Zuordnung von ID und Name erfolgt.
Zusammenführen kann man das über einen "Join" und du hast sauber abgegrenzt welche Reedereien gültig sind.

Ich würd's falls möglich eher so machen.

"Reederei"  
id________________Name
8128_____________Cunard
8130_____________Phoenix

"Gebiet"  
id________________Name
72_______________Transatlantik
67_______________SchwarzesMeer
69_______________Nordland

"Schiff"  
id________________Name
8194_____________Queen Mary 2
8196_____________Albatros 1

"Fahrt"  
id_______Id_Reederei____________ID_ship________________id_Destination
1_______8128___________________68_____________________69
2_______8198___________________164____________________67
Edit: bei der Tabelle fährt dann noch ein Kriterium ob das noch ein offener Posten ist oder nicht

für das Vorfiltern der Dropdowns ist mir das mal egal.
Ist sind nur 2 Spalten wichtig. Zum einen das Filterkriterium zum zweiten die wo die Werte für den Inhalt des anderen Dropdown's drinnen steht.
Bei mehreren ist das Grundprinzip auch nicht anders nur musst du die möglichen Varianten bedenken wie man es eingeben kann.
Member: jensgebken
jensgebken Apr 23, 2016, updated at Apr 24, 2016 at 13:09:15 (UTC)
Goto Top
geht leider nicht so - daten liegen per xml so vor und können nicht geändert werden
id_Reederei kann man vernachlässigen - ReedereiID ist relevant

schnittstelle ist die id_searchresult