• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Abhängige Dropdown-Elemente aus DB gefüllt

kfx

New member
Hallo Zusammen,

ich habe ein kleines Problem und zwar handelt es sich um das folgende Szenario:

  • Ich habe eine Datenbanktabelle mit den Spalten "Kontinent" und "Land".
  • In der HTML-Oberfläche habe ich jetzt die erste Dropdownauswahl "Kontinent" entsprechend mithilfe von PHP gefüllt.
  • Die zweite Dropdownauswahl "Land" soll sich erst mit den entsprechenden Daten füllen, wenn "Kontinent" ausgewählt wurde.

Bei diesem Problem gerät PHP als serverseitige Sprache an seine Grenzen und ich benötige JS. Ich habe da schon etwas gegoogelt und was ich hin bekomme ist das Folgende:
Code:
<script language="Javascript"> 
function update_auswahl() 
{ 
   var kategorieAuswahl = document.forms.verzeichnis.kontinent; 
   var unterkategorieAuswahl = document.forms.verzeichnis.land; 
   unterkategorieAuswahl.options.length = 0; // DropDown Menü entleeren  
    
   if (kategorieAuswahl.options[kategorieAuswahl.selectedIndex].value == "Europa") 
   { 
      unterkategorieAuswahl.options[0] = new Option("Deutschland"); 
      unterkategorieAuswahl.options[1] = new Option("Frankreich"); 
      // usw mit weiteren Ländern
   } 
   else if (kategorieAuswahl.options[kategorieAuswahl.selectedIndex].value == "Afrika") 
   { 
      //Hier Länder
   } 
   // usw mit weiteren Kontinenten
} 
</script>

EDIT: Sorry für die Arbeit an die Mods. Habe es selbst schon geschafft:

Code:
<script language="Javascript">
  function update_auswahl()
  {
    var kategorieAuswahl = document.forms.verzeichnis.kontinent;
    var unterkategorieAuswahl = document.forms.verzeichnis.land;
    unterkategorieAuswahl.options.length = 0; 

    <?php
    $sql = "SELECT * FROM KontiLand GROUP BY Kontinent";
    $result = mysql_query($sql);
    while($row_k = mysql_fetch_object($result)){
    ?>

      if (kategorieAuswahl.options[kategorieAuswahl.selectedIndex].value == "<?php echo $row_k->kontinent; ?>")
      {
        <?php
        $sql = "SELECT * FROM KontiLand WHERE kontinent='".$row_k->kontinent."'";
        $result = mysql_query($sql);
        $i=0;
        while($row_l = mysql_fetch_object($result_s)){
        ?>

        unterkategorieAuswahl.options[<?php echo $i?>] = new Option("<?php echo $row_l->land; ?>");

        <?php
        $i=$i+1;
        }
        ?>

      }

    <?php
    }
    ?>

  }
</script>

Grüße
kfx
 
Zuletzt bearbeitet:
Danke, dass du deine Lösung hier zeigst.

Ich habe eine kleine stilistische Anmerkung. Ich würde Programmlogik und Daten nicht mischen. Dadurch ist dein Code sehr schwer zu lesen und zu warten.
 
Zurück
Oben