• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

for-schleife mit PHP CODE

chr_sch

Neues Mitglied
hi,
ich hab mir eine for-schleife gebastelt. die schleife soll auf eine funktion draw_points() zugreifen. die daten die in diese funktion gefüttert werden sind in einem php-array gespeichert. verstehe nicht warum es nicht funktionert. vielleicht weiß ja jemand rat....

Code:
for(var i=0;i<max;i++){
   draw_points(<? echo $punktdaten[?>i<?][x];?>,<? echo $punktdaten[?>i<?][y];?>);
}

das einzige problem ist der index i. wenn ich den weglasse und dafür eine beliebige zahl eingebe, dann funktioniert die funktion einwandfrei. was ist hier nicht ok?
müsste wahrscheinlich die beiden variablen, die in die funktion eingehen, irgendwie zusammensetzen. weiß jemand wie man das macht?

gruss
 
Zuletzt bearbeitet:
Moin,
echo gibt Daten direkt an den Browser aus, da wird nix an die funktion draw_points übergeben...

mit

draw_points($punktdaten['x'];,$punktdaten['y']);

sollte das besser funktionieren.
Voraussetzung ist natürlich, das draw_points auch mit echo irgendwas an den Browser ausgiebt.

MfG
 
hi,

klappt nicht. die schleife steht ja in javascript und daher kann ich nicht so wie du dachtest auf den array zugreifen :-(
 
Speichere dein PHP-Array in ein JS-Array um und greife auf dieses zu:
PHP:
for ($i = 0; $i <= max1; $i++) {
    for ($j = 0; $j < max2; $j++) {
        echo 'jsarray´[' . $i . '][' . $j . '] = ' . $punktdaten[$i][$j]
        }
    }
Code:
draw_points(jsarray[i][x],jsarray[i][y]);
Wahrscheinlich geht es auch irgendwie mit AJAX, aber damit kenne ich mich leider nicht aus.
Viel Erfolg und viele Grüße - Ulrich
 
hi,

vielen dank. leider klappt es nicht. habe den php-code eingefügt und ein bißchen modifiziert. das ist aber nur der teil der ausgabe, oder?

hier mein aktueller code:

PHP:
$max1 = count($punktdaten);
$max2 = 3;
    
    for ($i = 0; $i < $max1; $i++) {
        for ($j = 0; $j < $max2; $j++) {
            echo 'jsarray´[' . $i . '][' . $j . '] = ' . $punktdaten[$i][$j];
        }
    }
wie schreib ich die daten in den js-array?
 
Zuletzt bearbeitet:
Wieso nimmst du nicht gleich JSON her, wenn du schon Daten zwischen PHP und JavaScript austauschen möchtest?

PHP:
<?php
    $aData = array("eins" => "1", "zwei" => "2");
    $sJsonEncoded = json_encode($aData);
?>
    var jsonObj = JSON.parse(<?php echo $sJsonEncoded; ?>);
 
von JSON hab ich noch nichts gehört gehabt. hab es mal probiert wie vorgeschlagen:

PHP:
    $punktdaten_fetch = $dbh->query("SELECT * FROM beitrag WHERE fk_kategorie = '$kat_id';");
        if($punktdaten_fetch){
            while ($row = $punktdaten_fetch->fetch(PDO::FETCH_OBJ)){
                $beitrag_id = $row->id; 
                $x_koord = $row->x_koordinate;
                $y_koord = $row->y_koordinate;
                $punktdaten[] = array('beitrag_id' => $beitrag_id , 
                                      'x'   => $x_koord, 
                                      'y'   => $y_koord );
            }
        }
         $sJsonEncoded = json_encode($punktdaten);

jetzt müsste der array doch in der $sJsonEncoded variablen stecken?beim einfügen in die funktion im JS-Code passiert aber nix
Code:
var jsonObj = JSON.parse(<?php echo $sJsonEncoded; ?>);    
                    for (var i = 0; i < 2; i++) {
                            draw_points(jsonObj[i][x],jsonObj[i][y]);
                    }

habe ich etwas falsch verstanden?
 
Habe das gerade mal lokal getestet, JSON.parse() wird nicht benötigt.

Beispiel-Code:
PHP:
<?php
$aData = array();
$aData[] = array('id' => 1, 'koord_x' => 25, 'koord_y' => 10);
$aData[] = array('id' => 2, 'koord_x' => 20, 'koord_y' => 18);
$aData[] = array('id' => 3, 'koord_x' => 9, 'koord_y' => 11);
$sJsonEncoded = json_encode($aData);
?>
HTML:
<html>
    <head>
        <title></title>
        <script type="text/javascript" src="jquery-1.8.0.js"></script>
    </head>
    <body>
        <script>
            $(document).ready(function() {
                var jsonObj = <?=$sJsonEncoded?>;
                jQuery.each(jsonObj, function(i, val) {
                    document.write("ID: " + val.id + "<br>");
                    document.write("X : " + val.koord_x + "<br>");
                    document.write("Y : " + val.koord_y + "<br><br>");
                });
            });
            </script>
    </body>
</html>

Output:
ID: 1
X : 25
Y : 10

ID: 2
X : 20
Y : 18

ID: 3
X : 9
Y : 11
 
Zurück
Oben