Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP + Javascript yhdessä ?

javerkki [28.05.2008 15:43:18]

#

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

Dude [28.05.2008 15:59:54]

#

Lainausmerkit pitäis tulla tuon $muuttujan ympärille kun se laitetaan nimet-taulukkoon.

Lebe80 [28.05.2008 17:01:52]

#

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.

Teuro [30.05.2008 14:17:51]

#

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>";
?>

tsuriga [30.05.2008 17:02:18]

#

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.

ville-v [30.05.2008 19:45:46]

#

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.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta