aus Shoutbox 5 Einträge ziehen, diese als Ticker "kreisen" lassen?

noopen

Erfahrenes Mitglied
Moin,
kleines Problem meinerseits...
Habe hier schon gesucht ob ich etwas finde, mit dem ich die aktuellsten 5 Einträge einer Shoutbox in einem Ticker ausgeben kann, da ich aber nichts gefunden habe, will ich mir so helfen:

Ich habe eine Shoutbox die ich unter einer extra-Seite laufen lassen möchte. Dort kann jeder rumschreien usw. und aus dieser Shoutbox ziehe ich für meine Startseite die letzten Beiträge raus und lasse die hintereinander wie ein Newsticker über die Seite ziehen

so ähnlich:
+++ XYZ: Hallo ich war hier +++ ABC: Schönes Wetter heute +++ SFG: Hallooooooooooooooooooo?+++ JKL:........

nun hab ich aus meinem ges.Code dieses rausgezogen und eine Extra-Datei davon gemacht:
kann hier aufgerufen werden

dahinter steckt dieses:
Code:
<? 
$chat_file_ok = "msg.txt"; 
$chat_lenght = 5; 
$max_single_msg_lenght = 512; 
$max_file_size = $chat_lenght * $max_single_msg_lenght; 
$file_size= filesize($chat_file_ok);             
if ($file_size > $max_file_size) { 
$lines = file($chat_file_ok);     
$a = count($lines); 
$u = $a - $chat_lenght; 
for($i = $a; $i >= $u ;$i--){ 
        $msg_old =  $lines[$i] . $msg_old; 
    } 
$deleted = unlink($chat_file_ok); 
$fp = fopen($chat_file_ok, "a+"); 
$fw = fwrite($fp, $msg_old); 
fclose($fp); 
} 
$msg = str_replace ("\n"," ", $message); 
$msg = str_replace ("\n"," ", $message); 
$msg = str_replace ("<", " ", $msg); 
$msg = str_replace (">", " ", $msg); 
$msg = stripslashes ($msg); 
if ($msg != ""){ 
$fp = fopen($chat_file_ok, "a+"); 
$fw = fwrite($fp, "<b>$person :</b> $msg "); 
fclose($fp); 
} 
$lines = file($chat_file_ok); 
$a = count($lines); 
$u = $a - $chat_lenght; 
for($i = $a; $i >= $u ;$i--){ 
        echo $lines[$i] . "<b> +++ </b>"; 
    } 
?>

und jetzt meine Fragen:
- was muss ich machen um alle hintereinander stehen zu haben wie das Ausgabebeispiel oben darstellt?

- wie lass ich dann diesen Text laufen? Ursprünglich wollte ich ja mit include diese shout-ticker.php einfügen. Aber wie kann ichs dann ununterbrochen sozusagen im Kreis laufen lassen?

Danke
danielle :-)
 
wieso speicherst du denn in der Datei ein "<br>" ?
Dann ist es auch kein Wunder wenn das zeugs nicht hintereinander steht....

ansonsten dann einfach ein
echo "<marquee>" vor die For-Schleife
und ein "</marquee>" nach die For-Schleife
dann läuft der Text von rechts nach links durch... wenn dir das hilft.
 
Original geschrieben von Muffinmampfer
ist \n nicht gleichwertig zu <br>?
Ein "\n" ist ein Zeilenumbruch unter Linux. Ein "<br>" ist ein Zeilenumbruch in HTML. Ich weiss nicht, ob das so hundertprozentig korrekt formuliert ist, aber ein "\n" ist insofern ein physischer Zeilenumbruch, während ein "<br>" ein Zeilenumbruch in der Darstellung ist. Für die Darstellung wandelt man mittels der Funktion
PHP:
$text = nl2br($source);
alle "\n" in "<br>" um.

Das "<marquee>..</marquee>"-Tag wird übrigens nicht von allen Browsern unterstützt. Kann sogar sein, dass es nur der IE unterstützt, der Opera jedenfalls nicht und soweit ich weiss auch NN 4-6 nicht.
Alternativ könntest Du das mit JavaScript lösen, womit Du aber auch immer abhängig vom Client/Browser bist.
 
naja, daran kanns ja nicht wirklich liegen.. denn ich habe alle <br>'s und \n's entfernt, die waren z.b. in dieser zeile zuvor zu finden:

$fw = fwrite($fp, "<b>$person :</b> $msg ");

und jetzt, naja, ist immernoch n Zeilenumbruch *g* das wundert mich so.

Ich hab bei Roflweb ein JavaScript rausgesucht... ich muss mal sehen dann ob es geht, aber zuvor brauch ich die Ausgabe noch in einer Zeile :-)...

an was kann es denn noch liegen? Oder hab ich vielleicht doch im Quellcode oben noch ein \n oder <br> übersehen? Wenn ja seh ich's immernochnicht :( .


thx danielle
 
Mach doch einfach mal direkt vor der Ausgabe der Nachricht ein:
$msg = str_replace ("<br>", " ", $msg);

Wenn das nicht funktioniert, dann weiss ich auch nicht weiter... ;)
Poste dann einfach nochma den aktuellen Code und den geparsten Code...
 
moin Lars ;o)

also, jetzt schaut mein code so aus (war das echt so gemeint?):

Code:
<? 
$chat_file_ok = "msg.txt"; 
$chat_lenght = 5; 
$max_single_msg_lenght = 512; 
$max_file_size = $chat_lenght * $max_single_msg_lenght; 
$file_size= filesize($chat_file_ok);             
if ($file_size > $max_file_size) { 
$lines = file($chat_file_ok);     
$a = count($lines); 
$u = $a - $chat_lenght; 
for($i = $a; $i >= $u ;$i--){ 
        $msg_old =  $lines[$i] . $msg_old; 
    } 
$deleted = unlink($chat_file_ok); 
$fp = fopen($chat_file_ok, "a+"); 
$fw = fwrite($fp, $msg_old); 
fclose($fp); 
} 
$msg = str_replace ("<br>", " ", $msg);
$msg = str_replace ("\n"," ", $message); 
$msg = str_replace ("\n"," ", $message); 
$msg = str_replace ("<", " ", $msg); 
$msg = str_replace (">", " ", $msg); 
$msg = stripslashes ($msg); 
if ($msg != ""){ 
$fp = fopen($chat_file_ok, "a+"); 
$fw = fwrite($fp, "<b>$person :</b> $msg "); 
fclose($fp); 
} 
$lines = file($chat_file_ok); 
$a = count($lines); 
$u = $a - $chat_lenght; 
for($i = $a; $i >= $u ;$i--){ 
        echo $lines[$i] . "<b> +++ </b>"; 
    } 
?>

und im Browser ausgeführt (Quellcode):
Code:
<b> +++ </b><b>sdfsdf :</b> sdfsdf<br><b> +++ </b><b>66 :</b> 66<br>
<b> +++ </b><b>test :</b> 5<br>
<b> +++ </b><b>test :</b> 4<br>
<b> +++ </b><b>test :</b> 3<br>
<b> +++ </b>

OHNE deine Zeile steht im Browser (Quellcode):
Code:
<b> +++ </b><b>sdfsdf :</b> sdfsdf<br><b> +++ </b><b>66 :</b> 66<br>
<b> +++ </b><b>test :</b> 5<br>
<b> +++ </b><b>test :</b> 4<br>
<b> +++ </b><b>test :</b> 3<br>
<b> +++ </b>

... oh hilfe
also wenn das mit meiner Vorlage einfach nicht geht bin ich auch gerne für andere Ausgangspunkte offen - brauche eine shoutbox die ganz normal funktioniert und aus der Shoutbox will ich NAME und MSG ziehen die dann wie ein Newsticker an einer gewissen stelle druchläuft, und davon immer die aktuellen letzten 5 Nachrichten oder so...

achja, funktioniert hat die Ausgabe nicht:
Link (mit deiner Zeile)

LG danielle
 
Hm...
Kommt mir ein Wenig komisch vor, die ganze Sache...

PHP:
$lines = file($chat_file_ok); 
$a = count($lines); 
$u = $a - $chat_lenght; 
for($i = $a; $i >= $u ;$i--)
{ 
  $lines[$i] = str_replace ("<br>", '', $lines[$i]);
  echo $lines[$i] . "<b> +++ </b>"; 
}
 
neuer Code:
PHP:
<? 
$chat_file_ok = "msg.txt"; 
$chat_lenght = 5; 
$max_single_msg_lenght = 512; 
$max_file_size = $chat_lenght * $max_single_msg_lenght; 
$file_size= filesize($chat_file_ok);             
if ($file_size > $max_file_size) { 
$lines = file($chat_file_ok);     
$a = count($lines); 
$u = $a - $chat_lenght; 
for($i = $a; $i >= $u ;$i--){ 
        $msg_old =  $lines[$i] . $msg_old; 
    } 
$deleted = unlink($chat_file_ok); 
$fp = fopen($chat_file_ok, "a+"); 
$fw = fwrite($fp, $msg_old); 
fclose($fp); 
} 
$msg = str_replace ("<br>", " ", $msg); 
$msg = str_replace ("\n"," ", $message); 
$msg = str_replace ("\n"," ", $message); 
$msg = str_replace ("<", " ", $msg); 
$msg = str_replace (">", " ", $msg); 
$msg = stripslashes ($msg); 
if ($msg != ""){ 
$fp = fopen($chat_file_ok, "a+"); 
$fw = fwrite($fp, "<b>$person :</b> $msg "); 
fclose($fp); 
} 
$lines = file($chat_file_ok); 
$a = count($lines); 
$u = $a - $chat_lenght; 
for($i = $a; $i >= $u ;$i--) 
{ 
  $lines[$i] = str_replace ("<br>", '', $lines[$i]); 
  echo $lines[$i] . "<b> +++ </b>"; 
}

?>

Browserausgabe:
Code:
<b> +++ </b><b>sdfsdf :</b> sdfsdf<b> +++ </b><b>66 :</b> 66
<b> +++ </b><b>test :</b> 5
<b> +++ </b><b>test :</b> 4
<b> +++ </b><b>test :</b> 3
<b> +++ </b>


Es hat funktioniert! Es hat tatsächlich F U N K T I O N I E R T!
wuahhhhhhhhh *anspring* DANKE DANKE DANKE!


jetzt muss es nur noch ticken *mfg*
Original:
Code:
//ENTER CONTENT TO SCROLL BELOW.
var content='<b>Hier</b> <i>kann</i> <u>beliebig</u> <font color="#FF0000">Text</font> <b><u><font color="#00FF00">formatiert</font></u></b>&nbsp;<span style="background-color: #FFFF00">werden</span>';


Unfunktionierender Versuch:
Code:
//ENTER CONTENT TO SCROLL BELOW.
var content='<?php

include("shout-ticker.php");

?>';

Hab ich schonmal erwähnt das ich n bissi doof bin? :-( :-) Wie mach ich denn des am schlausten? Hatte auch mal:

Code:
//ENTER CONTENT TO SCROLL BELOW.
var content='<? 
$chat_file_ok = "msg.txt"; 
$chat_lenght = 5; 
$max_single_msg_lenght = 512; 
$max_file_size = $chat_lenght * $max_single_msg_lenght; 
$file_size= filesize($chat_file_ok);             
if ($file_size > $max_file_size) { 
$lines = file($chat_file_ok);     
$a = count($lines); 
$u = $a - $chat_lenght; 
for($i = $a; $i >= $u ;$i--){ 
        $msg_old =  $lines[$i] . $msg_old; 
    } 
$deleted = unlink($chat_file_ok); 
$fp = fopen($chat_file_ok, "a+"); 
$fw = fwrite($fp, $msg_old); 
fclose($fp); 
} 
$msg = str_replace ("\n"," ", $message); 
$msg = str_replace ("\n"," ", $message); 
$msg = str_replace ("<", " ", $msg); 
$msg = str_replace (">", " ", $msg); 
$msg = stripslashes ($msg); 
if ($msg != ""){ 
$fp = fopen($chat_file_ok, "a+"); 
$fw = fwrite($fp, "<b>$person :</b> $msg "); 
fclose($fp); 
} 
$lines = file($chat_file_ok); 
$a = count($lines); 
$u = $a - $chat_lenght; 
for($i = $a; $i >= $u ;$i--){ 
        echo $lines[$i] . "<b> +++ </b>"; 
    } 
?> ';

aber das ging auch net *mfg*

...hat jemand nen Tipp? Z. B. Lars? *anstrahl*
 
Zurück