PHP in JavaScript
2 naročnika
2 naročnika
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èil samo eno? je vprašal gost v gorski koè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...
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...
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...