Php array an js-function übergeben

  • Hi,

    ich habe mittlerweile ca. 5 Stunden das Internet durchsucht, leider ohne Erfolg. Alles mögliche gefunden, ausprobiert und wieder verworfen.

    Und zwar geht es darum, einen einfachen eindimensionalen Array (in php erstellt) an eine Javascript-Function zu übergeben. Ich weiß mittlerweile dass ich den Array umwandeln muss (implode usw.) aber es funktioniert einfach nicht. Falls es irgendeinen Unterschied macht, der Array kann unterschiedliche viele Elemente haben.

    Erstellung des Arrays aus einer mysql-abfrage (steht in einer schleife):

    PHP
    $troopergesabfrage = mysql_query('SELECT gesress FROM troops WHERE id='.$typt.'');
        $dbtrooperges = dbabfrage($troopergesabfrage);    
        $troopgesress[] = $dbtrooperges[0][0];

    Aufruf der Js-Function:

    PHP
    echo "<td class='sta'><input type='text' name='".$dbtnumfield[$i][0]."' maxlength='5' size='3' value='0' onkeyup='testput(".$troopgesress.");' onchange='testput(".$troopgesress.");'></td>";

    so funktioniert es sicher nicht, dass ist mir klar. Das ist nur der Stand, bevor mir das Umwandlungsproblem auffiel.

    Hier die JS-Function:

    Code
    function testput(ressges1) {  
      var test12 = ressges1.length; 
      var test13 = ressges1[0]; 
      alert(test12);
    }

    Die function soll natürlich noch mehr machen, hab aber erstmal alles andere auskommentiert, um ausschließlich die arrayübergabe zu testen.

    Als Länge bzw. anzahl der elemente wird 1 zurückgegeben. der array hat im moment 5 elemente. Und alert(ressges1[0]); gibt undefined zurück.
    Das liegt natürlich daran dass ich im Moment den Array nicht umwandle. Ich wollte nur einmal die Situation schildern. Ich habe in einer anderen Datei testweise genau dasselbe mit Umwandlung ewig durchgetestet. Entweder gab es Syntax Probleme beim Einfügen der Umwandlung in die Parameter-Klammer der Funktion oder es hat aus anderen mir nich bekannten Problemen nicht funktioniert. Es hat einmal mit einem mehrdimensionalen array geklappt, allerdings hab ich aus einem mir unbekannten Grund eine Endlosschleife in Js produziert. Dieses Problem konnte ich auch nicht lösen, womit die möglichkeit wieder wegfiel.

    Zu meinem Wissensstand: Hab mir vor 2 jahren php und html angelesen, immer wieder ein wenig mit js gemacht, allerdings hab ich alles 3 nicht besonders strukturiert gelernt und würde mich auf jeden fall als anfänger bezeichnen. Bisher hauptsächlich Verwaltungs-Tools und ähnliches geschrieben. Im Moment schreibe mit einem Browsergame mein erstes größeres Projekt.

    Bin ziemlich verzweifelt und hoffe, ich finde hier hilfe.

    mfg, Haven

  • also nur so als idee... auch ohne umwandeln.. du schreibst die js-function ganz normal mit echo und initialisierst entweder das array über ne forschleife oder mit array.push
    bin zwar selber kein crack.. aber ich sowas man mit jsp so gemacht und bei php sollte des ja ähnlich funzen!

  • hmm, funktioniert nicht. kommt immer noch undefined zurück, mir scheint auch, dass diese methode vom aufbau her keinen großen unterschied macht. ich muss eigentlich hauptsächlich wissen, wie ich z.b. sowas: (also die umwandlung in js formatierung)

    PHP
    print "<script type='text/javascript'> var myarray = new Array(".implode(', ',$troopgesress)."); </script>";

    in die parameterklammer der funktion kriegt.

  • ich habs mal so versucht, dass ich aus dem php array nen string gemacht hab, in dem die einzelnen werte durch kommas getrennt sind.

    in js hab ich dann:

    Code
    var test15 = "<?echo explode("," , $troopgestest);?>";


    gemacht und danach die anzahl der elemente festgestellt. Das ergebnis war auch richtig, was ja heisst dass die daten die ich haben will da auch irgendwie angekommen sind. allerdings, wenn ich dann versuche, mit $test15[0] usw. abfragen will krieg ich im alert ein "A" zurück. wenn ich $test15 abfrage, kriege ich Array zurück. 2-dimensional $test15[0][0] hab ichs auch versucht, ebenfalls kein erfolg.

  • wenn ich dann versuche, mit $test15[0] usw. abfragen will krieg ich im alert ein "A" zurück. wenn ich $test15 abfrage, kriege ich Array zurück. 2-dimensional $test15[0][0] hab ichs auch versucht, ebenfalls kein erfolg.

    du hast versucht in javascript mit ner php-variante auf dein array zuzugreifen? lass mal des $ weg

  • Ungetestet:

    PHP
    <?php
       $einArray = array("a", "b", "c");
     
       echo "<script type='text/javascript'> 
             var myarray = new Array(";
       echo '"' . implode('","', $einArray) . '");';
       echo "\n</script>";
    ?>

    Einmal editiert, zuletzt von bandit600 (13. April 2009 um 13:44)

  • PHP
    ?>
    <script type="text/javascript">
    var myarray = new Array('<?
    echo addslashes($einarray[0]) . '\'';
    for($i = 1; $i != count($einarray); ++$i)
      echo ',\'' . addslashes($einarray[$i]) . '\'';
    ?>);
    </script>