[PHP] Ausgabe mit document.write('')

27o8

abgemeldet
2 Mai 2006
9.028
933
Moin,

hab ein Script für einen Zufallswitz, und habe das bislang immer nur per include() angeboten, da ich viele Anfragen bekommen habe, ob ich es als <script> anbiete, habe ich das mal bisschen geändert, aber es will einfach nicht. Könnt ihr mir sagen woran das liegt?

PHP:
<?php 
    $HOST = "localhost"; 
    $ID = "********"; 
    $PW = "********"; 
    $DB = "********"; 
    $conn_id = mysql_connect($HOST,$ID,$PW); 
    mysql_select_db($DB,$conn_id); 

 $tag = date(d,time());
 $monat = date(m,time());
 $jahr = date(y,time());
 $check = mysql_query("SELECT klicks FROM randoom_counter WHERE tag = '".$tag."' && monat ='".$monat."' && jahr ='".$jahr."' LIMIT 1");
 if (mysql_num_rows($check)){
mysql_query("UPDATE randoom_counter SET klicks=klicks+1 WHERE tag = '".$tag."' && monat ='".$monat."' && jahr ='".$jahr."' LIMIT 1");
 }else{
 mysql_query ("INSERT INTO randoom_counter (tag,monat,jahr,klicks) VALUES ('".$tag."','".$monat."','".$jahr."','1')");
 }
    $result = mysql_query("SELECT count(*) FROM witze"); 
    $gesamt = mysql_result($result,0); 

    mt_srand(time()); 
    $zeile = mt_rand(0,$gesamt-1);
    $result = mysql_query("SELECT text, id FROM witze");
    mysql_data_seek($result,$zeile); 
    $row = mysql_fetch_row($result);
 $ausgabe  = "<table style='border:2px solid #FFC700;'>";
 $ausgabe .= "<tr>";
 $ausgabe .= "<td align='center'><b>Zufallswitz</b></td></tr>";
 $ausgabe .= "<tr>";
 $ausgabe .= "<td align='center'>$row[0]</td></tr>";
 $ausgabe .= "<tr>";
 $ausgabe .= "<td colspan='2' align='center'>
<a href='https://www.joke-factory.de/' title='Hier klicken um zu Joke-Factory.de zu gelangen.'><font size='1' color='#000000'>Mehr Witze...</font></a> | <a href='https://www.joke-factory.de/witz-$row[1].html' target='_Blank' title='Diesen Witz auf Joke-Factory.de ansehen'><font size='1' color='#000000'>Zum Witz</font></a>
";
 $ausgabe .= "</td></tr></table></body>";
    mysql_free_result($result);

?>
document.write('<?=$ausgabe;?>');

Wer es mal testen möchte hir die Url zum Script: https://www.joke-factory.de/randoom3.php die ausgabe direkt klappt, aber sobald ich es einbinde per <script src="https://www.joke-factory.de/randoom3.php"></script> klappt es nimmer.

Gruß
Gremlin
 
Vielleicht solltest mal die Single Quotes beim HTML in Double Quotes ändern bzw. nen Backslash setzen, falls möglich.

*edit*
Mir ist noch aufgefallen, dass im Text auch noch Single/Double Quotes sind, vielleicht evtl. so lösen.

PHP:
var witz = decodeURI(<?=rawurlencode($ausgabe);?>);
document.write(witz);

k.A. obs richtig ausgegeben wird, wenn nicht dann einfach mal die anderen PHP-URLKodierungs/JS-URLDekodierungs Funktionen benutzen.
 
Zuletzt bearbeitet:
JavaScript mag keine mehrzeiligen Strings. Du musst für jede einzelne Zeile ein eigenes document.write machen.
 
JavaScript mag keine mehrzeiligen Strings. Du musst für jede einzelne Zeile ein eigenes document.write machen.

Danke! Jetzt klappt die Ausgabe wenigstens manchmal. Doch bei ca. der Hälfte der Aufrufe kommt der Fehler:

Nicht abgeschlossene Zeichenfolgenkonstante

Wie krieg ich das weg? Oben die Lösungen bringen mich nicht weiter, und google auch nicht. Hab halt von js nicht soviel Ahnung ;)

Gruß
Gremlin
 
du hast in deinen Ausgaben ' drin, die das documen.write(' schließen würden! Das geht nicht! Ich glaube du kannst das umgehen wenn du jedesmal \' schreibst.

Also z.b. <td align=\'center\'
 
du hast in deinen Ausgaben ' drin, die das documen.write(' schließen würden! Das geht nicht! Ich glaube du kannst das umgehen wenn du jedesmal \' schreibst.

Also z.b. <td align=\'center\'

Ne hab das schon geändert und zwar das alles \" ist und nichts geht, hab auch schon mit str_replace ' und " aus den Witzen gefiltert, aber das bringt leider auch nix.

Trotzdem danke!

Gruß
Gremlin
 
dann reparier mal den php fehler in https://www.joke-factory.de/randoom3.php ;) Dann kann ich dir genaueres sagen
:D wo kam der denn her? :D

So jetzt geht es mehr oder weniger und hier der aktuelle Quelltext:

PHP:
<?php 
    $HOST = "localhost"; 
    $ID = "*****"; 
    $PW = "*****"; 
    $DB = "*****"; 
    $conn_id = mysql_connect($HOST,$ID,$PW); 
    mysql_select_db($DB,$conn_id); 
 $tag = date(d,time());
 $monat = date(m,time());
 $jahr = date(y,time());
 $check = mysql_query("SELECT klicks FROM randoom_counter WHERE tag = '".$tag."' && monat ='".$monat."' && jahr ='".$jahr."' LIMIT 1");
 if (mysql_num_rows($check)){
mysql_query("UPDATE randoom_counter SET klicks=klicks+1 WHERE tag = '".$tag."' && monat ='".$monat."' && jahr ='".$jahr."' LIMIT 1");
 }else{
 mysql_query ("INSERT INTO randoom_counter (tag,monat,jahr,klicks) VALUES ('".$tag."','".$monat."','".$jahr."','1')");
 }
    $result = mysql_query("SELECT count(*) FROM witze"); 
    $gesamt = mysql_result($result,0); 
    mt_srand(time()); 
    $zeile = mt_rand(0,$gesamt-1);
    $result = mysql_query("SELECT text, id FROM witze");
    mysql_data_seek($result,$zeile); 
    $row = mysql_fetch_row($result);
 $zeile1 = "<table style=\"border:2px solid #FFC700;\">";
 $zeile2 = "<tr>";
 $zeile3 = "<td align=\"center\"><b>Zufallswitz</b></td></tr>";
 $zeile4 = "<tr>";
 $zeile5 = "<td align=\"center\">$row[0]</td></tr>";
 $zeile6 = "<tr>";
 $zeile7 = "<td colspan=\"2\" align=\"center\"><a href=\"https://www.joke-factory.de/\" title=\"Hier klicken um zu Joke-Factory.de zu gelangen.\"><font size=\"1\" color=\"#000000\">Mehr Witze...</font></a> | <a href=\"https://www.joke-factory.de/witz-$row[1].html\" target=\"_Blank\" title=\"Diesen Witz auf Joke-Factory.de ansehen\"><font size=\"1\" color=\"#000000\">Zum Witz</font></a>
";
 $zeile8 = "</td></tr></table>";
    mysql_free_result($result);
?>
document.write('<?=$zeile1;?>');
document.write('<?=$zeile2;?>'); 
document.write('<?=$zeile3;?>');
document.write('<?=$zeile4;?>');
document.write('<?=$zeile5;?>'); 
document.write('<?=$zeile6;?>');
document.write('<?=$zeile7;?>');
document.write('<?=$zeile8;?>');

Gruß
Gremlin
 
wenn ich jetzt dein Script auf einer HTML Seite mittels
<script src="https://www.joke-factory.de/randoom3.php" type="text/javascript">
einbinde, hängt sich ff in einer endlos-scriptschleife auf? Strange...
 
Und IE zeigt mir überhaupt nichts an, kein Fehler, kein Witz einfach nix :( und das mit der Endlosschleife sollte eigentlich nicht sein 8O ist doch gar keine drin.

Gruß
Gremlin
 
Okay trotzdem danke. Weis sonst jemand weiter?

Gruß
Gremlin

Das hier ist der Witz:
Code:
document.write('<td align="center">Was passiert, wenn ein Osfriese einen Bauernhof überfällt?
Ganz einfach: Die Mülltonnen sind leer und die Katzen schwanger! </td></tr>');

Die Absätze sind übernommen, von daher stimmt "unterminated string literal". Bei mir bleibt der FF am Leben (FF 1.0.7) :D
 
Die Absätze sind übernommen, von daher stimmt "unterminated string literal".
Also die Absätze filtern ^^ ich mach das mal, wenn es dann noch nicht klappt poste ich nochmal. thx schonmal ^^

Gruß
Gremlin