Javascript Array füllen anhand einer PHP FOR-Schleife

Mamph

Grünschnabel
Guten Tag liebe Gemeinde,

Ich habe im Moment ein Problem mit meinem Javascript. Ich habe ein Javascript entwickelt um Boxen einblenden zu lassen die mir dann Werte aus meiner Datenbank anzeigen. Um die Daten aus der Datenbank ins Skript zu bekommen, binde ich ein PHP-Array ins Skript ein. Das funktioniert auch.

Code:
<script type="text/javascript" language="JavaScript">
var InfoBox = new Array();
InfoBox[0] = 'nicht benutzt';
<?php if ($table1[0][0] == "Meindeg") {$Tag1 = "Montag";} ?>
...
<?php if ($table1[1][0] == "Meindeg") {$Tag2 = "Montag";} ?>
...
<?php if ($table1[2][0] == "Meindeg") {$Tag3 = "Montag";} ?>
...
<?php if ($table1[3][0] == "Meindeg") {$Tag4 = "Montag";} ?>
...
<?php if ($table1[4][0] == "Meindeg") {$Tag5 = "Montag";} ?>
...
<?php if ($table1[5][0] == "Meindeg") {$Tag6 = "Montag";} ?>
...
<?php if ($table1[6][0] == "Meindeg") {$Tag7 = "Montag";} ?>
...
<?php if ($table1[7][0] == "Meindeg") {$Tag8 = "Montag";} ?>
...
<?php $Datum1 = $Tag1.' '.substr($table1[0][1],8,2).'.'.substr($table1[0][1],5,2); ?>
...
<?php $BildN1 = $table1[0][7]; ?>
...
<?php $BildD1 = $table1[0][9]; ?>
...
<?php $TempNMIN1 = $table1[0][2]; ?>
...
<?php $TempNMAX1 = $table1[0][3]; ?>
...
<?php $TempDMIN1 = $table1[0][4]; ?>
...
<?php $TempDMAX1 = $table1[0][5]; ?>
...
<?php $ReenN1 = $table1[0][6]; ?>
...
<?php $ReenD1 = $table1[0][8]; ?>
...
<?php $SchneiN1 = $table1[0][13]; ?>
...
<?php $SchneiD1 = $table1[0][14]; ?>
...
InfoBox[1] = '<table> <tr> <td> <?php echo $Datum1; ?> </td> <td> <?php echo $Tag1; ?> Nuecht</td> <td><?php echo $Tag1; ?> Dag </td> </tr> <tr> <td> </td> <td> <img src="../Images/<?php echo $BildN1; ?>.png" width="100px" height="100px"> </td> <td> <img src="../Images/<?php echo $BildD1; ?>.png" width="100px" height="100px"> </td> </tr> <tr> <td> Temperatur[Min/Max] </td> <td> <?php echo $TempNMIN1; ?> / <?php echo $TempNMAX1; ?> </td> <td> <?php echo $TempDMIN1; ?> / <?php echo $TempDMAX1; ?> </td> </tr> <tr> <td> Reen : </td> <td> <?php echo $ReenN1; ?> l/m&sup2;</td> <td> <?php echo $ReenD1; ?> l/m&sup2;</td> </tr> <tr> <td> Schnei : </td> <td> <?php echo $SchneiN1; ?> mm</td> <td> <?php echo $SchneiD1; ?> mm</td> </tr></table>';
InfoBox[2] = '<table> <tr> <td> <?php echo $Datum2; ?> </td> <td> <?php echo $Tag2; ?> Nuecht </td> <td><?php echo $Tag2; ?> Dag </td> </tr> <tr> <td> </td> <td> <img src="../Images/<?php echo $BildN2; ?>.png" width="100px" height="100px"> </td> <td> <img src="../Images/<?php echo $BildD2; ?>.png" width="100px" height="100px"> </td> </tr> <tr> <td> Temperatur[Min/Max] </td> <td> <?php echo $TempNMIN2; ?> / <?php echo $TempNMAX2; ?> </td> <td> <?php echo $TempDMIN2; ?> / <?php echo $TempDMAX2; ?> </td> </tr> <tr> <td> Reen : </td> <td> <?php echo $ReenN2; ?> l/m&sup2;</td> <td> <?php echo $ReenD2; ?> l/m&sup2;</td> </tr><tr> <td> Schnei : </td> <td> <?php echo $SchneiN2; ?> mm</td> <td> <?php echo $SchneiD2; ?> mm</td> </tr> </table>';
InfoBox[3] = '<table> <tr> <td> <?php echo $Datum3; ?> </td> <td> <?php echo $Tag3; ?> Nuecht </td> <td><?php echo $Tag3; ?> Dag </td> </tr> <tr> <td> </td> <td> <img src="../Images/<?php echo $BildN3; ?>.png" width="100px" height="100px"> </td> <td> <img src="../Images/<?php echo $BildD3; ?>.png" width="100px" height="100px"> </td> </tr> <tr> <td> Temperatur[Min/Max] </td> <td> <?php echo $TempNMIN3; ?> / <?php echo $TempNMAX3; ?> </td> <td> <?php echo $TempDMIN3; ?> / <?php echo $TempDMAX3; ?> </td> </tr> <tr> <td> Reen : </td> <td> <?php echo $ReenN3; ?> l/m&sup2;</td> <td> <?php echo $ReenD3; ?> l/m&sup2;</td> </tr><tr> <td> Schnei : </td> <td> <?php echo $SchneiN3; ?> mm</td> <td> <?php echo $SchneiD3; ?> mm</td> </tr>  </table>';
InfoBox[4] = '<table> <tr> <td> <?php echo $Datum4; ?> </td> <td> <?php echo $Tag4; ?> Nuecht </td> <td><?php echo $Tag4; ?> Dag </td> </tr> <tr> <td> </td> <td> <img src="../Images/<?php echo $BildN4; ?>.png" width="100px" height="100px"> </td> <td> <img src="../Images/<?php echo $BildD4; ?>.png" width="100px" height="100px"> </td> </tr> <tr> <td> Temperatur[Min/Max] </td> <td> <?php echo $TempNMIN4; ?> / <?php echo $TempNMAX4; ?> </td> <td> <?php echo $TempDMIN4; ?> / <?php echo $TempDMAX4; ?></td> </tr> <tr> <td> Reen : </td> <td> <?php echo $ReenN4; ?> l/m&sup2</td> <td> <?php echo $ReenD4; ?> l/m&sup2;</td> </tr><tr> <td> Schnei : </td> <td> <?php echo $SchneiN4; ?> mm</td> <td>  <?php echo $SchneiD4; ?> mm</td> </tr> </table>';
InfoBox[5] = '<table> <tr> <td> <?php echo $Datum5; ?> </td> <td> <?php echo $Tag5; ?> Nuecht </td> <td><?php echo $Tag5; ?> Dag</td> </tr> <tr> <td> </td> <td> <img src="../Images/<?php echo $BildN5; ?>.png" width="100px" height="100px"> </td> <td> <img src="../Images/<?php echo $BildD5; ?>.png" width="100px" height="100px"> </td> </tr> <tr> <td> Temperatur[Min/Max] </td> <td> <?php echo $TempNMIN5; ?> / <?php echo $TempNMAX5; ?> </td> <td> <?php echo $TempDMIN5; ?> / <?php echo $TempDMAX5; ?> </td> </tr> <tr> <td> Reen : </td> <td> <?php echo $ReenN5; ?> l/m&sup2;</td> <td> <?php echo $ReenD5; ?> l/m&sup2;</td> </tr><tr> <td> Schnei : </td> <td> <?php echo $SchneiN5; ?> mm</td> <td> <?php echo $SchneiD5; ?> mm</td> </tr></table>';
InfoBox[6] = '<table> <tr> <td> <?php echo $Datum6; ?> </td> <td> <?php echo $Tag6; ?> Nuecht </td> <td><?php echo $Tag6; ?> Dag  </td> </tr> <tr> <td> </td> <td> <img src="../Images/<?php echo $BildN6; ?>.png" width="100px" height="100px"> </td> <td> <img src="../Images/<?php echo $BildD6; ?>.png" width="100px" height="100px"> </td> </tr> <tr> <td> Temperatur[Min/Max] </td> <td> <?php echo $TempNMIN6; ?> / <?php echo $TempNMAX6; ?> </td> <td> <?php echo $TempDMIN6; ?> / <?php echo $TempDMAX6; ?> </td> </tr> <tr> <td> Reen : </td> <td> <?php echo $ReenN6; ?> l/m&sup2;</td> <td> <?php echo $ReenD6; ?> l/m&sup2;</td> </tr> <tr> <td> Schnei : </td> <td> <?php echo $SchneiN6; ?> mm</td> <td> <?php echo $SchneiD6; ?> mm</td> </tr></table>';
InfoBox[7] = '<table> <tr> <td> <?php echo $Datum7; ?> </td> <td> <?php echo $Tag7; ?> Nuecht </td> <td><?php echo $Tag7; ?> Dag </td> </tr> <tr> <td> </td> <td> <img src="../Images/<?php echo $BildN7; ?>.png" width="100px" height="100px"> </td> <td> <img src="../Images/<?php echo $BildD7; ?>.png" width="100px" height="100px"> </td> </tr> <tr> <td> Temperatur[Min/Max] </td> <td> <?php echo $TempNMIN7; ?> / <?php echo $TempNMAX7; ?> </td> <td> <?php echo $TempDMIN7; ?> / <?php echo $TempDMAX7; ?> </td> </tr> <tr> <td> Reen : </td> <td> <?php echo $ReenN7; ?> l/m&sup2;</td> <td> <?php echo $ReenD7; ?> l/m&sup2;</td> </tr> <tr> <td> Schnei : </td> <td> <?php echo $SchneiN7; ?> mm</td> <td> <?php echo $SchneiD7; ?> mm</td> </tr></table>';
InfoBox[8] = '<table> <tr> <td> <?php echo $Datum8; ?></td> <td> <?php echo $Tag8; ?> Nuecht </td> <td><?php echo $Tag8; ?> Dag </td> </tr> <tr> <td> </td> <td> <img src="../Images/<?php echo $BildN8; ?>.png" width="100px" height="100px"> </td> <td> <img src="../Images/<?php echo $BildD8; ?>.png" width="100px" height="100px"> </td> </tr> <tr> <td> Temperatur[Min/Max] </td> <td> <?php echo $TempNMIN8; ?> / <?php echo $TempNMAX8; ?> </td> <td> <?php echo $TempDMIN8; ?> / <?php echo $TempDMAX8; ?> </td> </tr> <tr> <td> Reen : </td> <td> <?php echo $ReenN8; ?> l/m&sup2;</td> <td> <?php echo $ReenD8; ?> l/m&sup2;</td> </tr> <tr> <td> Schnei : </td> <td> <?php echo $SchneiN8; ?> mm</td> <td> <?php echo $SchneiD8; ?> mm</td> </tr></table>';
</script>

Nun möchte ich aber nicht dass das Skript statisch ist, sondern sich dynamisch an den Inhalt der Datenbank anpasst. Ich dachte mir dass das mit einer FOR-Schleife in PHP möglich sei. Ich weiß aber nicht wie ich in PHP das Mehrdimensionenarray eines Javascriptes füllen kann. Ich möchte gerne dass die ID des einzelnen Arrays mit dem Wert in der Datenbank geladen wird. Ich habe schon versucht das irgendwie hinzubekommen, scheitere aber an meinem wenigen Wissen von Javascripts.
PHP:
<script type="text/javascript" language="JavaScript">
var InfoBox = new Array();
InfoBox[0] = 'nicht benutzt';
<?php for ($I=1;$I<=$count2;$I++) {
 $Datum1 = $table1[$I][0].' '.substr($table1[$I][1],8,2).'.'.substr($table1[$I][1],5,2); 
 $Tag1 = $table1[$I][0]; 
 $BildN1 = $table1[$I][7]; 
 $BildD1 = $table1[$I][9]; 
 $TempNMIN1 = $table1[$I][2]; 
 $TempNMAX1 = $table1[$I][3]; 
 $TempDMIN1 = $table1[$I][4]; 
 $TempDMAX1 = $table1[$I][5]; 
 $ReenN1 = $table1[$I][6]; 
 $ReenD1 = $table1[$I][8]; 
 $SchneiN1 = $table1[$I][13]; 
 $SchneiD1 = $table1[$I][14]; 
 echo '<script type="text/javascript" language="JavaScript">
 InfoBox['.$I.'] ='; echo '<table> <tr> <td> '.$Datum1.' </td> <td>'.$Tag.' Nuecht</td> <td>'.$Tag1.' Dag </td> </tr> <tr> <td> </td> <td> <img src="../Images/'.$BildN1.'.png" width="100px" height="100px"> </td> <td> <img src="../Images/'.$BildD1.'.png" width="100px" height="100px"> </td> </tr> <tr> <td> Temperatur[Min/Max] </td> <td>'.$TempNMIN1.' / '.TempNMAX1.' </td> <td>'.$TempDMIN1.' / '.$TempDMAX1.' </td> </tr> <tr> <td> Reen : </td> <td> '.$ReenN1.' l/m&sup2;</td> <td> '.$ReenD1.' l/m&sup2;</td> </tr> <tr> <td> Schnei : </td> <td> '.$SchneiN1.' mm</td> <td> '.$SchneiD1.' mm</td> </tr></table>';
 echo '</script>';
} ?>

</script>

Weiß vielleicht jemand eine Lösung. Vielen Dank jetzt schonmal
 
Hi,

Man kann hier JSON verwenden - muss man aber meiner Meinung nach nicht unbedingt. Die Lösung mit der FOR-Schleife ist zwar deutlich umständlicher als die JSON-Lösung, sollte aber prinzipiell auch funktionieren.

Mir fallen spontan zwei Fehler auf:

1.) die Zeile <script type="text/javascript" language="JavaScript"> wird ganz am Anfang und nochmal bei jedem Schleifendurchlauf ausgegeben. Genauso das Script-Ende-Tag. Lass das mal aus der Schleife raus.

2.) In dem echo-Befehl fehlen die Hochkommas. Will man diese ausgeben, muss man sie mit \ escapen:


PHP:
echo 'InfoBox['.$I.'] =\'<table> <tr> <td> '.$Datum1.' </td> ... \'';


Gruß,
Dunsti
 
Zurück