Ankündigung

Einklappen
Keine Ankündigung bisher.

DropDown abhängig von anderem DropDown

Einklappen

Neue Werbung 2019

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

  • DropDown abhängig von anderem DropDown

    Hallo Leute,

    also ich habe nund schon sehr lange das Web abgesucht nach diesem Problem und bin auch fündig geworden. Auch hier mit der SuFu. Doch leider habe ich es nicht 100% umsetzen können. Ich habe Ajax Json gelesen, PHP Funktionen, JS Funktionen und sehe nun vor lauter Bäumen den Wald nicht mehr!

    Hier der Code zum befüllen des DropDown:
    PHP-Code:
          include ("../dbconnect.php");
          
          
    $query="SELECT Id, CategoryOverview FROM CategoryOverview ";
          
    $result mysql_query($query) or die("Err.:".mysql_error());
            while (
    $rows mysql_fetch_array($result,MYSQL_BOTH))
            {
              echo 
    "<option name=\"Id\" value=\"".$rows["Id"]."\">".$rows["CategoryOverview "]."</option>";
            }
            echo(
    $rows["Id"]); 
    Hier mal die Aufgabenstellung:
    Tabelle Eins:
    Id CategoryEins
    Tabelle Zwei:
    Id IdCategoryEins CategoryZwei
    Tabelle Drei:
    Id IdCategoryZwei CategoryDrei

    So wie man hier in den Tabellen sehen kann ist jeweils die nächste Tabelle abhängig von der ersten. Genau so sollten dann auch meine DropDown funktionieren.

    Ich wähle im ersten DropDown Getränke aus. Sobald ich ausgewählt habe (onChange) wird das zweite DropDown sichtbar mit den Inhalten für Getränke (Id 1) Wein, Bier, Schnaps. Dann wähle ich im zweiten DropDown Bier aus (id 1) und es erscheint das dritte DropDown / Helles, Dunkles usw. Wenn ich nun soweit bin, muss ich die drei Id in einem Formular in die Datenbank speichern.

    Hoffe einer von euch kann es mir nun so erklären, dass ich es umsetzen kann!

  • #2
    Dein onchange-Handler muss eine neue HTTP-Anfrage (zum Beispiel per XMLHttpRequest oder wenn Du jQuery verwendest: API/1.2/Ajax - jQuery JavaScript Library) mit der gewählten Id als Parameter senden.
    Das angesprochene Skript baut eine Abfrage mit der übermittelten Id zusammen und sendet die gefundenen Datensätze in irgendeiner Form an den Client zurück.

    Kommentar


    • #3
      Hab das jetzt mal probiert aber klappt ungefähr überhaupt nicht. Ich glaube langsam aber sicher ich bin einfach zu dumm dafür.

      Sorry

      Noch jemand einen Ansatz oder eine Komplettlösung?

      Kommentar


      • #4
        Nehmen wir mal an, Dein Skript erzeugt folgenden HTML-Code
        Code:
        <html>
          <head>
            <title>...</title>
            <script>
              function myOnchangeHandler() {
                
                
                return;
              }
            </script>
          </head>
          <body>
            <form>
              <select name="xyz" onchange="myOnchangeHandler()">
                <option value="0">-</option>
                <option value="1">Kategorie Eins</option>
                <option value="2">Kategorie Zwei</option>
                <option value="3">Kategorie Drei</option>
              </select>
            </form>
          </body>
        </html>
        Was hast Du jetzt in myOnchangeHandler() versucht?
        (einfach mal Deine Versuche posten.)

        Kommentar


        • #5
          Ok Probieren wir es mal langsam

          PHP-Code:
          var xmlHttpObject false;

          if (
          typeof XMLHttpRequest != 'undefined'
          {
              
          xmlHttpObject = new XMLHttpRequest();
          }
          if (!
          xmlHttpObject
          {
              try 
              {
                  
          xmlHttpObject = new ActiveXObject("Msxml2.XMLHTTP");
              }
              catch(
          e
              {
                  try 
                  {
                      
          xmlHttpObject = new ActiveXObject("Microsoft.XMLHTTP");
                  }
                  catch(
          e
                  {
                      
          xmlHttpObject null;
                  }
              }
          }

          //myOnchangeHandler() tritt dann ein, wenn ich im DropDown einen Eintrag ausgewählt habe
          function myOnchangeHandler() {

          //Hier muss die Abfrage(n) wohl aufgerufen werden oder stehen???
           
              
          xmlHttpObject.open('get','URL');
              
          xmlHttpObject.onreadystatechange handleContent;
              
          xmlHttpObject.send(null);
              return 
          false

          }

          //wohin die Ausgabe geht
          function handleContent()
          {
              if (
          xmlHttpObject.readyState == 4)
              {
                  
          document.getElementById('myContent').innerHTML xmlHttpObject.responseText;
              }

          Mein Problem hier, ich habe einfach zu wenig Erfahrung damit und komme im Moment noch nicht ganz klar. Wenigstens kann ich jetzt schon ohne Neuladen den Inhalt aus einer Textdatei lesen

          Danke schonmal an dich David.

          Kommentar


          • #6
            Vielleicht so?:

            Das Java-Script:

            PHP-Code:
            function auswaehlen(s){
                   
            wert=s.options[s.selectedIndex].value;
                     if(
            wert!=0){
                        
            location.href='index.php?auswahl=' wert;
                     }
                     else{
                        
            location.href='index.php';
                     }
                  } 
            und die Form:

            PHP-Code:
            echo "<select name='test' onChange='auswaehlen(this)'>";
                     echo 
            "<option value=''>Bitte w&auml;hlen...</option>";
                     while(
            $row=mysql_fetch_array($ergebnis)){
                        echo 
            "<option value='".$row["id"]."'>".$row["name"]."</option>";
                     } 
            //while $row
                     
            echo "<option value='0'>zur&uuml;ck...</option>";
                     echo 
            "</select>"

            Kommentar


            • #7
              Hi pfump,

              mit deinem Script alleine kann es doch auch schon funktionieren oder? Dann bräuchte ich das HttpRequest nicht, weil meine Seite sich neu laden kann oder?

              So hab das mal zusammen gebaut und funzt auch. Jetzt kann ich also mit $_GET["auswahl"] den Wert abfragen.

              Ich spinne mal im Kopf weiter nur Grob:
              PHP-Code:
              if(empty($_GET["auswahl"]){
              Zeige erstes DropDown an
              }
              else
              {
              If(empty(
              $_GET["zwei"]){
              Zeige zweites DropDown an mit ausgwählter Id vom ersten DropDown
              {
              else
              {
              if(empty(
              $_GET["drei"]){
              Zeige drittes DropDown an mit ausgwählter Id vom zweiten DropDown

              Kann es so in der Richtung weiter gehen? Damit kann ich auch später per Form die drei Value mit in die DB übergeben oder?

              Danke schonmal!

              Kommentar


              • #8
                Ja das geht auch so. Das HttpRequest brauchst du nicht.
                Wird halt nur die Seite wieder geladen.

                Die Erweiterung dürfte dann kein Problem mehr sein.

                Da du ja die $_GET - Variable auslesen und jeweils drauf
                reagieren kannst (je nachdem welcher Wert übergeben wird).

                Du kannst ja dann per Get beliebig viele Werte übergeben...

                Kommentar


                • #9
                  Super, werde mich gleich mal dran machen und es probieren. Sollten noch Fragen aufkommen werde ich mich sicherlich melden.

                  Besten Dank an euch beide erstmal.

                  Gerne kann das Thema aber noch weiter getrieben werden und die Lösung von pfump und David zusammen gebracht werden.

                  Kommentar


                  • #10
                    Leider mußte ich aus beruflichen Gründen jetzt fast einen Monat aussetzen und bin wieder bei diesem Problem gelandet, folgender Stand:

                    Ich habe ein DropDown in dem ich ein OnChange habe. Die Auswahl übergebe ich und nehme sie in die SQL-Abfrage mit auf (Where - Klausel). Das funktioniert auch bis jetzt. Wenn ich nun im zweiten DropDown einen Eintrag auswähle schickt er das Formular aber nicht ab sondern schreibt mir immer einen Fehler mit Objekt erwartet(unten links im Browser). Keine Ahnung wo hier das Problem liegt. Vielleicht kann mir jemand das dritte DropDown erklären, wie ich es anbinden kann.

                    Hier mal der gesamte Code
                    PHP-Code:
                    <?php
                    error_reporting
                    (E_ALL);
                    include (
                    "../dbconnect.php");

                      echo(
                    $_GET['auswahl']);     
                      if (empty(
                    $_GET["auswahl"])){
                      echo 
                    '          
                    <html>
                    <head>
                    <title> DropDown aus SQL-Daten </title>
                    <script type="text/javascript">
                    function auswaehlen(s){
                           wert=s.options[s.selectedIndex].value;
                             if(wert!=0){
                                location.href="DropDownDrei.php?auswahl=" + wert;
                             }
                             else{
                                location.href="DropDownDrei.php";
                             }
                          }
                    </script>
                    </head>
                    <body>
                    <form action="" method="post">
                        '
                    ;      
                          echo 
                    "<select name='drop1' onChange='auswaehlen(this)'>";
                          echo 
                    "<option value=''>Bitte w&auml;hlen...</option>";
                          
                          
                    $query="SELECT Id, CategoryOverview FROM CategoryOverview";
                          
                    $ergebnis mysql_query($query) or die("Err.:".mysql_error());
                          
                    //echo ($query);
                             
                    while($row=mysql_fetch_array($ergebnis)){
                                echo 
                    "<option value='".$row["Id"]."'>".$row["CategoryOverview"]."</option>";
                             } 
                    //while $row
                             
                    echo "<option value='0'>zur&uuml;ck...</option>";
                             echo 
                    "</select>";
                      }
                      else
                      { 
                      echo
                    '
                      <form action="" method="post">
                        '
                    ;  
                          
                    //echo($_GET['auswahl']);    
                          
                    echo "<select name='drop2' onChange='auswaehlen(this)'>";
                          echo 
                    "<option value=''>Bitte w&auml;hlen...</option>";
                          
                          
                    $query="SELECT Id, Category FROM Category WHERE IdCategoryOverview='".$_GET['auswahl']."'";
                          
                    $ergebnis mysql_query($query) or die("Err.:".mysql_error());
                          
                    //echo ($query);
                             
                    while($row=mysql_fetch_array($ergebnis)){
                                echo 
                    "<option value='".$row["Id"]."'>".$row["Category"]."</option>";
                             } 
                    //while $row
                             
                    echo "<option value='0'>zur&uuml;ck...</option>";
                             echo 
                    "</select>";
                       }
                       
                    ?>
                    </form> 
                    </body>
                    </html>
                    Besten Dank für jede Hilfe

                    Kommentar


                    • #11
                      Hallo,

                      der Fehler ist leicht erklärt.
                      Wenn du deine Seite lädst bzw. die erste Checkbox
                      ausgewählt hast, dann schau dir mal den Quelltext an (im Browser).
                      Laß ihn auf!

                      Jetzt triff die Auswahl in deiner 2. Checkbox. Jetzt kommt ja
                      der Fehler. Dann öffne wieder den Quelltext der Seite
                      und vergleiche den 1. Quelltext mit dem 2. und
                      schon solltest du sehen was falsch ist.

                      Kommentar


                      • #12
                        Hallo Pfump,

                        ahhhhhh, besten Dank. Am Schluß ist doch immer alles einfach. Beim zweiten Aufruf stand das JS - Script nicht mehr zur verfügung. Einfach in den ElseBlock mit rein und schon läuft das Ding.

                        Das sind ja mit Abstand die schlimmsten Fehler, so einfach .....

                        Nochmals Danke, Grüße,
                        Thisi

                        Kommentar


                        • #13
                          Kein Ding,
                          wofür hat man denn ein Forum

                          Kommentar

                          Lädt...
                          X