PHP in JavaScript

Hočem naridt skripto, ki bi naključne šale iz moje strani servirala na drugih straneh s pomočjo JavaScripta. Spisal sem kodo, ki bi morala delovat, ko odprem datoteko joke_show.php, ki php spremeni v javascript se lepo izpiše:

document.write("
<b>DVE MALICI</b><br>
Natakar, kako to, da ste mi prinesli dve malici, ko pa sem naro&#232;il samo eno? je vprašal gost v gorski ko&#232;i.
"Oh, že spet ta presneti odmev!" je zastokal natakar. <a href='http://smeh.kozolec.net'>Vec šal</a>")

Ko pa to stran kličem v stran js.htm, se pokaže prazna stran:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<script type="text/javascript" src="joke_show.php"></script></body>
</html>

joke_show.php:

<?
Header("content-type: application/x-javascript");

$db=mysql_connect ("localhost", "kozolec001", "*******")
or die ('I cannot connect to the database because: ' . mysql_error());
mysql_select_db ("kozolec001_portal");

$table = "sale";

$query = "SELECT * FROM $table";
$result1 = mysql_query($query);
$st = mysql_num_rows($result1);
$total= $st;

$id= rand(1,$total);

$query_1 = "SELECT * FROM $table WHERE id='$id'";
$result_1 = mysql_query($query_1);

while($sale=mysql_fetch_array($result_1))
{
$naslov = $sale['naslov'];
$vic = $sale['vic'];

echo "document.write(\"
<b>".$sale['naslov']."</b><br>
".$sale['vic']."<a href='http://smeh.kozolec.net'>Več šal</a>\")";
};

?>

10 odgovorov

bujes, javascript koda je neveljavna... iz stringa skini tiste newlines, pa bo vse v redu... takole:

echo "document.write(\"<b>".$sale['naslov']."</b><br>".$sale['vic']."<a href='http://smeh.kozolec.net'>Več šal</a>\");";

aja, pa tole si preberi, malo o bolj optimiziranem pridobivanju nakljucnega zapisa iz tabele...

Še vedno ne dela. www.kozolec.net/js.htm

Ker je se kar naprej invalid javascript :)

document.write("<b>Kakav</b><br>Kaj re?e blondinka ?e jo vprašaš za razliko med belo in rjavo kravo?
"Rjave dajejo kakav." <a href='http://smeh.kozolec.net'>Vec šal</a>");

za kravo? in pred "Rjave imas newline... tudi poskrbi, da bos imel escapane dvojne narekovaje ali pa v html entities... nekako takole:

echo "document.write(\"<b>".$sale['naslov']."</b><br>".htmlspecialchars(str_replace("\n", "", $sale['vic']))."<a href='http://smeh.kozolec.net'>Več šal</a>\");";

Aja, mogoce bi dal v htmlspecialchars() tudi $sale['naslov'], verjetno se lahko tudi tam pojavijo kaksni butasti znaki...

Še zmer ne dela...

Aha, ocitno imas se CR znak v stringu... Naredi raje takole:

echo "document.write(\"<b>".htmlspecialchars($sale['naslov'])."</b><br>".preg_replace('![\n\r]+!', '<br>', htmlspecialchars($sale['vic']))."<a href='http://smeh.kozolec.net'>Več šal</a>\");";

Tole gornje ti bo namesto newlinov dalo <br> tage...

Podobno zadevo bi sicer lahko povzrocil tudi s funkcijo nl2br(), ampak ta funkcija pusti newline znake v stringu...

Supr, zdj dela. Hvala! Te bom dodal v moj blogroll...prej k slej.

Zdj moram pa še tisto optimizacijo zrihtat...

Okej :) ....

Zdj je pa spet str problem: šumniki :S

Dokler so strani v windows-1250 je ql, če pa je kšn drug kodiranje je pa stranje. Kako pa nej to odpravm??

charset atribut... malo vec o script tagu