Keduan: php array mit javascript nutzen

Hallo zusammen,

hab jetzt schon einige zeit im Netz und auchhier im forum gesucht, kriegs aber einfach nicht hin.

Problem ist folgendes:

ich lese aus einer datenbank ein 1d array aus

ich habe ein textfeld das durch eine dropdownliste gefüllt wird.
die dropdown liste stellt die elemente des arrayszu verfügung

bei onChange der dropdownliste wird der wert in das textfeld geschrieben.

soweit funktioniert alles.

Jetzt möchte ich aber ein 2d array aus der datenbank auslesen.

die dropdownliste zeigt weiterhin die [x][0] elemente des arrays an,
aber nun sollen 3 weitere textfelder live mit den den werte [x][1] , [x][2] und [x][3] gefüllt werden.

ich rufe jetzt in onChange eine funktion auf und möchte ihr die 4 werte übergeben.

Das ist aber nicht möglich, da javascript das php array nicht mehr kennt.

Kann ich das array irgendwie an javascipt übergeben, bzw. würde das funktionieren ein javascript array zu erstellen. der php server schreibt das array das er ja kennt in die variable, diese wird mit zum client übertragen und ich kann es dort nutzen?

Wenn ja wie würde das aussehn?

???
???
onChange="f3(this.value, ???, ???, ???)"

Danke schonmal.

Keduan

  1. Hallo!
    Warum lässt du das 2dimensionale Array einfach "im Code" und gibst der Dropdownliste nur die Schlüssel?
    Mit deiner onchange Funktion kannst du dann über den Schlüssel auf das entsprechende Array-Element zugreifen und dann kannst du machen was du willst.

    --
    LG,
    Snafu
    1. n'abend,

      Warum lässt du das 2dimensionale Array einfach "im Code" und gibst der Dropdownliste nur die Schlüssel?

      Wenn du den Kram nicht manuell fabrizieren möchtest und deine Zielumgebung das unterstützt, kannst du dir mal json_encode anschauen.

      --
      #selfhtml hat ein Forum?
      sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|
    2. habe ich versucht, dann hab ich als schlüssel einfach, 0 1 2 3 4 usw.

      will ich aber dann onChange="f3(phparray[this.value][0], etc)"

      machen kommt ein fehler,

      da er ja zum zeitpunkt der php variablen auflösung die die javascript variable this.value noch nicht kennt.

      denke zumindest das das der fehler ist.

      dachte daher das ich das array irgendwie vom php server zum client bekommen muss damit dieser, je nach this.value auf das array zugreifen kann. hatte da halt an ein javascript array gedacht, das der server mitsendetirgendwie. geht das nicht oder gibts was einfacheres?

      danke aber schonmal für die schnelle antwort

      1. Bei einer Dropdownliste ist es aber auch this.selectedIndex bzw this.selectedIndex.value je nachdem was du willst.
        Schau mal hier.

        --
        LG,
        Snafu
        1. ok, hatte jetzt halt auch mit this.value funktioniert, da ich value in den options des selects auchgesetzt habe.

          Die frage ist für mich halt immer noch, wie ich das php auf den client bekomme, ansonsten hab ich ja keine möglichkeit die textfelder mitdendaten zu füllen.

          ich könnte natürlich ganz plump ne php forschleife über alle elemente laufen lassen die dann hidden felder erstellt mit den entsprechenden werten, auf die kann ich dann auch auf dem client zugreifen, richtig?

          Aber das kanns ja eigentlich nicht sein.

          Gibts nicht ne möglichkeit mein phparray 1zu1 in eine javascipt array zu übernehmen?

          Hab leider keine vorstellung davon wie das funktioniert :/

          vielleicht so in der art: ?

          echo("<script> var jsArray = new Array($phpArray)");

          ne kanns auch nicht sein, dann schreibt er mir schön den text und derclient weiss trotzdem nichts mit $phpArray anzufangen...

          1. Schau mal, hier ist ein Beispiel:

              
            <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
            <html xmlns="http://www.w3.org/1999/xhtml">  
            <head>  
            <title>Foobar</title>  
            <script type="text/javascript">  
            // das folgende array musst du von der php datei mit echo / print erzeugen.  
            // oder du machst es mit ajax und json  
            foo = new Array(  
             new Array("Heute", "ist", "Dienstag!"),  
             new Array("Morgen", "ist", "Mittwoch!"),  
             new Array("Gestern", "war", "Montag!"),  
             new Array("Meine", "Katze", "schläft!")  
            );  
              
            function change(key) {  
             document.getElementById('elem0').value = foo[key][0];  
             document.getElementById('elem1').value = foo[key][1];  
             document.getElementById('elem2').value = foo[key][2];  
            }  
            </script>  
            </head>  
            <body>  
            <select name="foo" onchange="change(this.options[selectedIndex].value)">  
             <option value="0">Nummer 1</option>  
             <option value="1">Nummer 2</option>  
             <option value="2">Nummer 3</option>  
             <option value="3">Nummer 4</option>  
            </select>  
            <br />  
            <input id="elem0" type="text" />  
            <input id="elem1" type="text" />  
            <input id="elem2" type="text" />  
            </body>  
            </html>  
            
            
            --
            LG,
            Snafu