Maik W. aus E.: Probleme bei abhängigem Drop-Down

Tach zusammen,

ich möchte gerne zwei aus einer mySQL-Datenbank gefüllte, abhängige Dropdown-Felder bauen.

Ich habe versucht, aus den Bröckchen von Herr Ernst und Knusperklumpen mir ein eigenes Script zusammenzubauen. Allerdings bleibt mein zweites -abhängiges- Dropdownfeld leer; Die Javascript-Konsole gibt "myOptions has no properties" aus...

Da ich nicht recht weiß, wofür das 'myOptions = weg-zu-selectbox2;' gut ist, steh ich ein bißchen auf dem Schlauch...

Gefüllt mit der Benennung meiner zweiten Drop-Down-Box ist es immerhin definiert, hat aber keine Eigenschaften...

Kann mir jemand sagen, wie ich welchem Objekt hier Eigenschaften zuweisen muß?

Danke und

http://www.gruss-aus-essen.de

Maik

  1. Hallo Maik.

    Da ich nicht recht weiß, wofür das 'myOptions = weg-zu-selectbox2;' gut ist, steh ich ein bißchen auf dem Schlauch...

    Ich schätze, dass du an dieser Stelle eine Referenz zum select-Element notieren sollst.

    Dies kann, wenn sich das select-Element innerhalb eines Formulares befindet, über die document.http://de.selfhtml.org/javascript/objekte/forms.htm#allgemeines@title=forms.http://de.selfhtml.org/javascript/objekte/elements.htm@title=elements-Kollektion geschehen, oder aber wie gewohnt über document.http://de.selfhtml.org/javascript/objekte/document.htm#get_elements_by_tag_name@title=getElementsByTagName.

    Einen schönen Dienstag noch.

    Gruß, Ashura

    --
    sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
    „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
    [HTML Design Constraints: Logical Markup]
    1. Hallihallo!

      Oder, sofern dem auszuwählenden select eine ID gegeben wurde,
      getElementById.

      Viele liebe Grüße,
      Der Dicki

  2. Tach zusammen,

    ich möchte gerne zwei aus einer mySQL-Datenbank gefüllte, abhängige Dropdown-Felder bauen.

    Der zugriff aus das zweite 'select' gelingt jetzt, allerdings wird das dynamische Array nicht richtig ausgewertet, weil ich keinen Zugriff auf das richtige Array-Element bekomme...

    Array bauen:

      
    var projekt_values = new Array();  
    <?php  
    $i=0;  
    $query = "SELECT projekt_id, kunden_ref, projekt_name FROM azvs_projekte ORDER BY projekt_name";  
    $link = mysql_query($query) OR die(mysql_error());  
    while($result = mysql_fetch_array($link))  
    {  
    echo "projekt_values[".$i."] = new Array('". $result["projekt_name"] ."','". $result["projekt_id"] ."','". $result["kunden_ref"] ."');\n";  
    $i++;  
    }  
    ?>  
    
    

    In der Funktion will ich nun auf das dritte Element von 'projekt_values' zugreifen:

      
     // 2 selectbox neu befüllen       hier--|  
     for(i in projekt_values[uebergabe][2])<-|  
     {  
      if(projekt_values[uebergabe][i] != "")  
      {  
       addOption = new Option(projekt_values[uebergabe][i],projekt_values[uebergabe][i],false,false);  
    // und hier sollen die Werte 'erstes Element' und 'zweites Element' angezeigt werden  
       optionNr = parseInt(i);  
       myOptions[optionNr] = addOption;  
      }  
     }  
    }  
    
    

    Es wird immer nur auf Werte mit dem Index zugegriffen, der in der Übergabe hinterlegt ist und nicht, wie von mir gewollt, auf diejenigen, die die den Übergabewert 'in der dritten Spalte' stehen haben. Wer weiß Rat?

    Danke und

    http://www.gruss-aus-essen.de

    Maik

    1. hi,

      Array bauen:

      Ausgabe?

      In der Funktion will ich nun auf das dritte Element von 'projekt_values' zugreifen:

      // 2 selectbox neu befüllen       hier--|
      for(i in projekt_values[uebergabe][2])<-|
      {
        if(projekt_values[uebergabe][i] != "")

        
      Was willst du hier mit der for-in-Schleife? Die einzelnen Elemente unterhalb von projekt\_values[uebergabe][2] durchlaufen?  
        
      Warum versuchst du dann im if, auf projekt\_values[uebergabe][i] zuzugreifen? Das wäre doch dann projekt\_values[uebergabe][2][i].  
        
      gruß,  
      wahsaga  
        
      
      -- 
      /voodoo.css:  
      #GeorgeWBush { position:absolute; bottom:-6ft; }
      
      1. Tach auch wahsaga,

        hi,

        Array bauen:

        Ausgabe?

          
        var projekt_values = new Array();  
        projekt_values[0] = new Array('- kein -','1','0');  
        projekt_values[1] = new Array('Arbeiten an der Clinical-Research-Datenbank','11','2');  
        projekt_values[2] = new Array('Arbeiten an der HomBRex-Datenbank','9','2');  
        projekt_values[3] = new Array('Arbeiten an der NHKDB','6','1');  
        projekt_values[4] = new Array('Arbeiten an der Vipdach-Datenbank','12','2');  
        projekt_values[5] = new Array('Arbeiten an der Übersee-Datenbank','10','2');  
        projekt_values[6] = new Array('Arbeitszeitverwaltungssystem','2','3');  
        projekt_values[7] = new Array('Auftragsabwicklung','18','8');  
        projekt_values[8] = new Array('Auftragsabwicklung - Sonderwünsche','21','8');  
        projekt_values[9] = new Array('Eigenverwaltung','8','3');  
        projekt_values[10] = new Array('Fortbildung','3','3');  
        projekt_values[11] = new Array('Geschäftsbericht','23','11');  
        projekt_values[12] = new Array('Gruß aus Essen','4','3');  
        
        

        etc...

        In der Funktion will ich nun auf das dritte Element von 'projekt_values' zugreifen:

          
         for(i in projekt_values[uebergabe][2])  
         {  
          if(projekt_values[uebergabe][2][i] != "")  
          {  
           addOption = new Option(projekt_values[uebergabe][0],projekt_values[uebergabe][1],false,false);  
           optionNr = parseInt(i);  
           myOptions[optionNr] = addOption;  
          }  
         }  
        }  
        
        

        Was willst du hier mit der for-in-Schleife? Die einzelnen Elemente unterhalb von projekt_values[uebergabe][2] durchlaufen?

        Nein, ich möchte alle 'projekt_values' durchlaufen und immer, wenn der Wert in projekt_values[2] dem Wert in uebergabe entspricht, einen neuen Optionswert bauen, der das zweite Element als Wert enthält und das erste Element als Text anzeigt. Eigentlich ganz einfach, wenn's nicht Javascript wäre...

        http://www.gruss-aus-essen.de

        Maik

        1. hi,

          Was willst du hier mit der for-in-Schleife? Die einzelnen Elemente unterhalb von projekt_values[uebergabe][2] durchlaufen?
          Nein, ich möchte alle 'projekt_values' durchlaufen

          Aber das tust du mit
          for(i in projekt_values[uebergabe][2])
          doch gerade nicht?

          Damit durchläufst du nur alle Eigenschaften, die projekt_values[uebergabe][2] hat - und das müssten nach deinem Beispiel oben die String-Eigenschaften 'Arbeiten an der HomBRex-Datenbank', '9' und '2' sein, plus ggf. weitere, die ein Array-Objekt von seiner Natur her in Javascript hat (z.B. length).

          und immer, wenn der Wert in projekt_values[2] dem Wert in uebergabe entspricht

          Also möchtest du immer den zweiten Wert des "Unter"-Arrays vergleichen?

          Dann möchtest du aber auf projekt_values[x][2] zugreifen.

          Das solltest du dann aber mit einer "normalen" nummerischen For-Schleife machen.
          Wenn du nämlich projekt_values mittels for in durchläuft, würdest du bspw. auch die Eigernschaft length dieses Array-Objektes als eine seiner Eigenschaften geliefert bekommen - und die hat kein [2] unter sich, welches du vergleichen könntest, weil sie nämlich skalarer Natur, und kein Array ist ...

          gruß,
          wahsaga

          --
          /voodoo.css:
          #GeorgeWBush { position:absolute; bottom:-6ft; }