Problem mit 2 voneinander abhängigen Dropdownboxen

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

  • Problem mit 2 voneinander abhängigen Dropdownboxen

    Hallo zusammen,

    ich habe folgendes Problem:
    ich habe eine Datenbanktabelle mit folgender Struktur:

    | id | land | ort | wert1 | ... |
    ______________________________________________
    | 1 | de | stuttgart | 120 | ... |
    | 2 | de | muenchen | 150 | ... |
    | 3 | at | wien | 77 | ... |

    und noch weitere Datensätze.
    Nun möchte ich 2 Dropdownboxen manchen. In der ersten sollen alle
    Länder, welche in der Datenbankvorhanden sind erscheinen.

    PHP-Code:
    echo "<select name=\"drp1\">";
     
    $query1=mysql_query("SELECT DISTINCT land FROM tabelle ORDER BY land ASC"
    or die(
    mysql_error());
             while(
    $zeile=mysql_fetch_assoc($query1)) {
                 echo 
    "<option value=\"".$zeile['land']. "\">".$zeile['land']."</option>";
    }
    echo 
    "</select>"
    dies funktioniert auch ohne Probleme.
    In der 2. Dropdownbox sollen alle Städte abhängig vom ausgewählten Land
    (Dropdownbox1) erscheinen.

    PHP-Code:
    echo "<select name=\"drp2\">";
     
    $query2=mysql_query("SELECT DISTINCT ort FROM tabelle  WHERE land= ORDER BY ort ASC") or die(mysql_error());
             while(
    $zeile2=mysql_fetch_assoc($query12) {
                 echo 
    "<option value=\"".$zeile['ort']. "\">".$zeile['ort']."</option>";
    }
    echo 
    "</select>"
    Mein Problem ist nun was ich in die WHERE Bedingung der 2. Query reinschreibe.
    Kann mir da jemand helfen ?

    Danke

  • #2
    Re: Problem mit 2 voneinander abhängigen Dropdownboxen

    Original geschrieben von mgoertz
    Mein Problem ist nun was ich in die WHERE Bedingung der 2. Query reinschreibe.
    Na wonach willst du denn die Daten auswählen?
    Nach dem zuvor im ersten Selectfeld ausgewählten Land, schreibst du doch schon selber.

    Wie man Formulardaten in PHP in Empfang nimmt, weisst du doch hoffentlich?
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Ja ich weiß dass ich auf Formularfelder mit $_POST['feldname'] zugreifen kann.
      Doch wenn ich das in der WHERE Bedingung einfüge geht dies ja erst wenn ich meinen Submitbutton gedrückt habe, ich möchte dass das 2. Dropdownfeld sich vor dem drücken des submitbuttons füllt. ich weiß nur nicht wie ich das mit javascript hinbekommen denn ich denke dass ich um ein javascript nicht drumrum komme. nur bin ich da leider anfänger

      Kommentar


      • #4
        schau dir mal das tutorial an. da gibt es ein kleines beispiel mit einer ländersuche und ajax. vieleicht hilft es weiter.

        gruß
        peter
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar


        • #5
          ich habe mir das Tutorial angeschaut, doch weiß ich leider nicht wie ich das auf die 2 Dropdownboxen anwenden soll, kann mir evtl jemand mit einem kleinen Stück code weiterhelfen ?

          Kommentar


          • #6
            onchange für die länderliste, value an php übergeben, und städteliste ausgeben. das prinzip ist dasselbe. probier mal ein wenig herum und benutzte auch die fehlerkonsole vom firefox.

            gruß
            peter
            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
            Meine Seite

            Kommentar


            • #7
              gerade an der werteübergabe an php hapert es bei mir gerade oder hab ich hab nur einen denkfehler

              Kommentar


              • #8
                wie sieht dein versuch aus, den wert der ersten box mittels js an den server zu senden?

                Kommentar


                • #9
                  oder hab ich hab nur einen denkfehler
                  dieses. in meinem tutorial übergibst du den inhalt des textfeldes an das php-script. es geht primär um folgenden code:
                  PHP-Code:
                  <input type="text" name="land" value="" onkeyup="checkForm();"
                  das mußt du für dein select-feld mit onchange machen
                  PHP-Code:
                  if (document.eingabe.land.value.length 0
                  die bedingung kann raus. und das musst du auch noch an dein select-feld anpassen:
                  PHP-Code:
                  ajax_obj.open("GET""country.php?str="escape (document.eingabe.land.value)); 

                  gruß
                  peter
                  Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                  Meine Seite

                  Kommentar


                  • #10
                    irgendwie bekomme ich es nicht hin hier mein kompletter code den ich bislang habe

                    PHP-Code:
                    <?php
                    include("connect.php");

                    ?>
                    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                    <html>
                    <head>
                     <script type="text/javascript" src="ajax.js"></script>
                    </head>

                    <body onload="startAjax();">
                            
                        <script type="text/javascript">
                                function setCountry(){
                                    ajax_obj.open("GET", "test.php?str="+ escape (document.frm_auswahl.drp2.value));

                                }
                            </script>
                    <form name="frm_auswahl" action="" method="post">
                             <select name="drp1" style="WIDTH: 300px" onchange="setCountry(this.value);">
                            <?php
                                $rs
                    =mysql_query("SELECT DISTINCT land FROM tabelle ORDER BY land ASC") or die(mysql_error());
                                while(
                    $zeile=mysql_fetch_assoc($rs)) {
                                    echo 
                    "<option value=\"".$zeile['land']. "\">".$zeile['land']."</option>\n";
                                }
                            
                    ?>
                            </select>
                            <br>
                            
                            <select name="drp2"  style="WIDTH: 300px">
                            <?php
                                    $wert1 
                    "<script type=\"text/javascript\">document.frm_auswahl.drp1.value</script>";
                                    echo 
                    $wert1
                                
                    $rs2=mysql_query("SELECT DISTINCT ort FROM tabelle
                     WHERE land='"
                    .$_GET['str']."'ORDER BY ort ASC") or die(mysql_error());
                                while(
                    $zeile=mysql_fetch_assoc($rs2)) {
                                    echo 
                    "<option value=\"".$zeile['ort']. "\">".$zeile['ort']."</option>\n";
                                }
                            
                    ?>
                            </select>
                            <br>
                                    </script>
                                <input type="submit" value="senden" name="senden">
                    </form>
                    </body>
                    </html>
                    kannst du mir bitte noch ein wenig helfen ?

                    Kommentar


                    • #11
                      du übergibst setCountry() doch ein argument - warum verwendest du es nicht, um die url zusammenzustellen?

                      Kommentar


                      • #12
                        kannst du mir bitte noch ein wenig helfen ?
                        und welche änderungen hast du in der ajax.js vorgenommen?

                        peter
                        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                        Meine Seite

                        Kommentar


                        • #13
                          in der ajax.js hab ich folgendes geändert:

                          PHP-Code:
                           function setCountry (land)
                                  {
                                      
                          document.frm_auswahl.drp1.value land;
                                      
                          dropSets();
                                  } 
                          und bei
                          PHP-Code:
                          if (document.eingabe.land.value.length 0)
                                       {
                                              
                          ajax_obj.open("GET""test.php?str=" escape (document.frm_auswahl.drp1.value));
                                       
                          ajax_obj.send(null);
                                       
                          ajax_obj.onreadystatechange getXML;
                                   } 

                          Kommentar


                          • #14
                            PHP-Code:
                            if (document.eingabe.land.value.length 0
                            1. und genau das solltest du entfernen, da diese bedingung in deinem fall false zurückliefert.

                            2. außerdem hast du die funktion setCountry zweimal definiert. in der js- und html-datei.

                            3. und den php-code im zweiten select-feld brauchst du auch nicht.

                            peter
                            Zuletzt geändert von Kropff; 09.01.2007, 19:28.
                            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                            Meine Seite

                            Kommentar


                            • #15
                              ich habe nun in der html datei die function setCountry rausgelöscht und ebenso folgende Bedingung in der ajax.js Datei

                              PHP-Code:
                              if (document.eingabe.land.value.length 0
                              sowie die geschweiften klammern von dem if, doch gehlt leider bislang immer noch nichts

                              Kommentar

                              Lädt...
                              X