Dropdown reagiert auf onChange

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Dropdown reagiert auf onChange

    Hallo,

    sicher wurde sowas schon öfter gepostet, aber ich finde einfach nichts, was ich verstehe .

    Ich habe ein Formular mit mehreren Felder, u.a. zwei Dropdownfeldern. Ich möchte diese beiden Dropdowns aus der Datenbank füllen. Allerdings sollen sich die Datensätze aus dem zweiten Dropdown auf das erste beziehen, also ich wähle z.B. im ersten den Hersteller aus und erhalte im zweiten Dropdown nur die Modelle, die dieser Hersteller anbietet.

    Allerdings möchte ich nicht für das zweite Dropdown das komplette Formular neu laden müssen, sondern über ein onChange o.ä. dies realisieren.

    Geht das und wenn ja, wie gehe ich das am besten an?

    Danke, Chriss

  • #2
    ein beispiel siehst du hier (unter destination):
    http://www.hotel-career.com/index/in...ngebote&tld=de
    mein Sport: mein Frühstück: meine Arbeit:

    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

    Kommentar


    • #3
      Das komplette Formular musst du schon neu laden, aber eben über das onChange der ersten Select-Box!

      Wie du die "alten" Daten behälst erfährst du, wenn du die Suche nutzt.
      it's not a bug,
      it's a feature!

      Kommentar


      • #4
        selfhtml hat ein schönes beispiel dazu
        Kissolino.com

        Kommentar


        • #5
          Hallo nochmal,

          ich kann für mein spezielles Problem nichts in der Suche finden, bin mir aber sicher, dass schon einiges darüber vorhanden ist.

          Läst es sich nicht irgendwie so machen, dass erst einmal alles eingelesen wird und wenn dann im ersten ein Datensatz ausgewählt wird, im zweiten nur die angezeigt werden, die als Kriterium dem ersten entsprechen?

          @Wurzel: Kannst Du mir möglicherweise eine URL nennen zu dem SelfHTML-Beispiel?

          Danke, Chriss

          Kommentar


          • #6
            http://selfhtml.teamone.de/javascrip...te/options.htm
            ok, das beispiel ist nich so schön, wie ich dachte ... das prinzip sollte aber klar sein ... du musst in js mit arrays arbeiten und diese je nach auswahl der ersten box-option an die 2. selectbox übergeben ... die arrays kannst du natürlich mit php zusammenstellen
            Kissolino.com

            Kommentar


            • #7
              Mann, das iss irgendwie ziemlich harter Tobac. Ich Blick nicht dran entlang. Hier mal wie ich mir das vorstelle, hab nur keine Ahnung wie das mit PHP umgesetzt wird.

              Ich stelle mir vor, dass ich eine ID und den Wert, der in dem Pulldown erscheinen soll auslese. Die ID übergebe ich dann bei einem onChange an das zweite Pulldown und dort werden alle nach dem Schema angezeigt:

              wert[id] = ""

              Hat nicht jemand evtl. ein einfaches Beispiel dafür. das was ich bisher gesehen habe, ist mir irgendwie alles etwas zu hoch.

              Sorry, Chriss

              Kommentar


              • #8
                das kann doch nicht so schwer sein:

                du hast hersteller dropdown mit php gefüllt => audi | vw | honda => 1. liste
                - jeder eintrag entspricht seinem wert

                du hast modelle in einem array
                Code:
                // javascript:
                modelle['audi'] = new Array();
                modelle['audi'][0] = 'a3';
                modelle['audi'][1] = 'a4';
                modelle['audi'][2] = 'a6';
                auch das lässt sich per php aus der quelle füllen, die du anzapfst (db, text-file, etc)

                wenn jetzt "audi" gewählt wird, füllst du deine 2. box über eine for-schleife mit den inhalten des modelle['audi']-arrays
                Kissolino.com

                Kommentar


                • #9
                  Das bezeichnet man doch als mehrdimensionale Arrays, oder? Ich habe mit Arrays bisher kaum bis gar nicht gearbeitet, aber jetzt habe ich etwas, wo ich ansetzen kann.

                  Danke, Chriss

                  Kommentar


                  • #10
                    Hallo Wurzel,

                    wo muss ich denn das Array einsetzen? Ich hab keine Ahnung, wie ich das hinbekomm. Hier mal meine beiden Listefelder ohne onChange-Handler.

                    PHP-Code:
                    echo "<SELECT onChange=\"\" name=\"hersteller\">";

                    $query = @mysql_query("SELECT hersteller FROM testdatenbank;") or die("Es ist ein fehler aufgetreten: "mysql_error());
                    while (
                    $ergebnis mysql_fetch_object($query))
                    {
                       echo 
                    "<option value=\"".$ergebnis->hersteller."\">".$ergebnis->hersteller."</option>";
                    }

                    echo 
                    "</select>";

                    echo 
                    "<SELECT name=\"modell\">";

                    $query = @mysql_query("SELECT modell FROM testdatenbank;") or die("Es ist ein fehler aufgetreten: "mysql_error());
                    while (
                    $ergebnis mysql_fetch_object($query))
                    {
                       echo 
                    "<option value=\"".$ergebnis->modell."\">".$ergebnis->modell."</option>";
                    }

                    echo 
                    "</select>"
                    Wo muss ich denn das Array einsetzen und wi bekomm ich das letztendlich an das zweite Dropdown übergeben?

                    Danke, Chriss

                    Kommentar


                    • #11
                      schau mal in die codeschnipsel
                      Kissolino.com

                      Kommentar


                      • #12
                        Original geschrieben von Tomcat Chriss
                        Hier mal meine beiden Listefelder ohne onChange-Handler.
                        das ist kein HTML-, sondern PHP-code.

                        bitte hör auf, das zu vermischen - wir diskutieren hier zuerst mal ein HTML/JS-problem, also verschone uns bitte mit sämtlichem PHP-code.
                        sieh erst einmal zu, dass du das ding als statische HTML-seite zum laufen kriegst - dann nachher per PHP-script die nötigen werte dynamisch da rein zu bringen, ist das kleinere problem, das solltest du selbst hinkriegen.
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          Bin ja schon dabei. Die Lösung in den Codeschnipseln ist genau das, was ich gesucht habe. Ich denke, damit bekomm ich es zum Laufen.

                          Wenn ich es noch immer nicht hinbekomme, melde ich mich noch einmal.

                          Danke, Chriss

                          Kommentar


                          • #14
                            Hallo alle miteinander,

                            ich bekomme das einfach nicht hin. Ich habe versucht, den ersten Teil des Scriptes:
                            Code:
                            toadd["auto"] = new Array();
                            toadd["auto"][0] = "audi";
                            toadd["auto"][1] = "bmw";
                            toadd["auto"][2] = "opel";
                            toadd["auto"][3] = "vw";
                            mit folgendem PHP-Code umzusetzen, aber ich hab mich irgendwo total verzettelt und hab jetzt ein wenig den Überblick verloren. Ich könnte mir auch vorstellen, dass es wesentlich einfachere Variante gibt, nur ich seh sie nicht.

                            Hier mal mein Code-Müll:
                            PHP-Code:
                            $query = @mysql_query("SELECT left(plz,2) AS plz, firma FROM germanmap GROUP BY plz, firma;")
                            or die(
                            "Es ist ein Fehler bei der DB-Abfrage aufgetreten: "); //, mysql_error());
                            while ($ergebnis mysql_fetch_assoc($query))
                            {
                                echo 
                            "toadd[\"".$ergebnis["plz"]."\"] = new Array();<br>";
                                echo 
                            "toadd[\"".$ergebnis["plz"]."\"] = \"".$ergebnis["firma"]."\"<br>";
                            }

                            $queryplz = @mysql_query("SELECT left(plz,2) AS plz FROM germanmap;");
                            while (
                            $abfrageplz mysql_fetch_assoc($queryplz))
                            {
                                echo 
                            "toadd[\"".$abfrageplz["plz"]."\"] = new Array();<br>";
                                
                            $queryfirma = @mysql_query("SELECT firma FROM germanmap WHERE plz like '{$abfrageplz["plz"]}%';");
                                
                            $anzahlplz mysql_num_rows($queryfirma);
                                for (
                            $i 1$i $anzahlplz 1$i++)
                                {
                                    while (
                            $abfragefirma mysql_fetch_assoc($queryfirma))
                                    {
                                        echo 
                            "toadd[\"".$abfrageplz["plz"]."\"][".$i."] = \"".$abfragefirma["firma"]."\";<br>";
                                    }
                                }

                            Zuletzt geändert von Tomcat Chriss; 23.01.2004, 15:38.

                            Kommentar


                            • #15
                              was soll da übergaupt rauskommen? willst du eine plz-liste und verschiedene firmenlisten bezogen auf die plz?
                              Kissolino.com

                              Kommentar

                              Lädt...
                              X