Miten onnistuu PHP:ssä javascript ?
Kokeilin seuraavaa, missä yritän php:n for-loopissa laittaa arvot
javascript taulukkoon. Hommasta ei tule mitään, joten voiko joku hiukan opastaa.
Koodi on tässä (lyhennetty)
<?php $kysely="SELECT col1 FROM testitaulu"; ?> <html> <script language="javascript" type="text/javascript"> // Luodaan Javascript taulu var nimet = new Array(); </script> <body> <?php for ($i = 0; $i < mysql_num_rows($haku); $i++) { $tietue = mysql_result($haku, $i, "col1"); $muuttuja = $tietue; echo "<script type='text/javascript'>"; // TÄSSÄ YRITÄN LAITTAA TIETUEEN TAULUKKOON echo "nimet[$i] = $muuttuja"; echo "</script>"; ?> // TÄÄLLÄ KOKEILEN TULOSTAA YHDEN ARVON <script language="javascript" type="text/javascript"> alert(nimet[0]); </script> <?php // Tämä tulostuu hyvin echo "PHP: $muuttuja<br>"; } ?> </body> </html>
Nyt kun katson selaimen virhelokia, niin siellä on herjaa
Error: Antti is not defined Line: 17 Error: Arto is not defined Line: 18
Eli Antti ja Arto ovat tietueiden arvoja.
Hiukan apua tarvisin, että miten saan php-arvoja js-taulukkoon?
js-taito on lähes olematon.
Mod. edit: Siirretty oikealle alueelle
Lainausmerkit pitäis tulla tuon $muuttujan ympärille kun se laitetaan nimet-taulukkoon.
Näkeekö silmäni oikein, tehdäänkö tossa sama haku moneen kertaan for-loopissa ja tehdäänkö tuossa monta <script> -tägiä peräkkäin?
Eli <script> -tägi for -loopin ympärille ja mySql:n sisältö vaikka mysql_fetch_assoc():lla
Näyttäisi myös että $kysely muuttuu jossain vaiheessa $haku -muuttujaksi tai kenties osa riveistä on jäänyt copy/pasteematta.
javerkki kirjoitti:
<?php $kysely="SELECT col1 FROM testitaulu"; ?> <html> <script language="javascript" type="text/javascript"> // Luodaan Javascript taulu var nimet = new Array(); /* Tämä rivi pois ihan kokonaan */ </script> <body> <?php /* Tähän olisi parempi vaikka mysql_fetch_array($haku); */ for ($i = 0; $i < mysql_num_rows($haku); $i++) { /* Silloin tämä olisi turha */ $tietue = mysql_result($haku, $i, "col1"); /* Samoin kuin tämä */ $muuttuja = $tietue; /* Tämäkin tulee nyt monta kertaa, mutta pois vaan */ echo "<script type='text/javascript'>"; // TÄSSÄ YRITÄN LAITTAA TIETUEEN TAULUKKOON /* Nämä ovat oikein */ echo "nimet[$i] = $muuttuja"; /* Tämä pois */ echo "</script>"; ?> // TÄÄLLÄ KOKEILEN TULOSTAA YHDEN ARVON /* Tämä rivi pois */ <script language="javascript" type="text/javascript"> alert(nimet[0]); </script> <?php // Tämä tulostuu hyvin niin pitääkin echo "PHP: $muuttuja<br>"; } ?> </body> </html>
<?php /* Tehdään vaikka näin ei lyhennetä luovasti */ $tietue = mysql_query("SELECT nimi FROM taulu", $yhteys); echo"<script language=\"javascript\" type=\"text/javascript\">"; echo" var nimet = new Array();"; while($rivi = mysql_fetch_array($tietue)){ echo nimet[] = $rivi['nimi']; } /* Pitäisi tulla alertti */ alert($nimet[0]); echo"</script>"; ?>
Edellisessä on nyt JavaScriptiä ja PHP:tä väärällä tavalla sekaisin.
Tässäpä esimerkki käyttäen datan, sen hakujen ja esityksien jaottelua.
<?php /** * Nämä tietokantahauthan voivat löytyä vaikkapa * ihan omasta tiedostostaan, tässä esimerkkinä * haku suoritetaan ennen muita toimintoja. */ $result = mysql_query( 'SELECT `nimi` FROM `taulu`', $link ); ?> <script type="text/javascript"> var nimet = Array(); <?php while( ( $row = mysql_fetch_array( $result ) ) !== FALSE ): ?> nimet[] = "<?php echo $row[ 'name' ]; ?>"; <?php endwhile; ?> </script>
Tmv.
Teuro kirjoitti:
javerkki kirjoitti:
// TÄSSÄ YRITÄN LAITTAA TIETUEEN TAULUKKOON /* Nämä ovat oikein */ echo "nimet[$i] = $muuttuja";
Eikös tuossa koodissa ollut koko ongelma se, että stringin ympärille pitäisi laittaa lainausmerkit?
Jos oikein ymmärsin asian,
echo "nimet[$i] = \"$muuttuja\"";
sijoitettuna alkuperäiseen koodiin toimisi kuten halutaan.
Aihe on jo aika vanha, joten et voi enää vastata siihen.