Shoutbox- wie maximal xx posts anzeigen?!

Skourer

Mitglied
Hiho :)

Ich oller nub hab mir ne shoutbox geschrieben! funzt auch alles ganz gut! Was mir aber noch fehlt is das er halt net alle anzeigt sondern er halt immer nur die letzten 20 anzeigt! wie mach ich das? Was hab ich da für möglichkeiten?
Bitte nen par beispielmöglichkeiten ;)


PS: die shoutbox is ohne mysql oda sowat... also quasi ne txt datei... (auch wenn ich se dat genannt hab ;))


danke schonmal :)
 
ich hab es bei mir so gemacht gehabt, dass ich als erstes die datei als array geladen habe.
und dannach über eine for-schleife das ganze ausgegeben.

PHP:
$max = 20;
$file = file("shoutbox.dat");
for ($i=0;$i<$max;$i++){
  $output = explode("|#|", $file[$i]);
  //hier das ganze was noch für die ausgabe fehlt rein
}

so in etwa sieht das bei mir aus.
 
Zuletzt bearbeitet:
Danke schonmal... aber könnte mir bitte jemand die Zeilen mal erleutern? Ich versuch das zu lernen indem ich mir andere sachen anschaue nur momentan... ;)

Was macht denn "file" und bei der for schleife, was bewirkt $i=0;$i<$max;$i++ UND was is explode und was macht dieses "|#|" ?

Sry für die vielleicht blöden fragen aber ich möchte auch wenn ichn nub bin doch keine halben sachen bauen ;)
 
Also:

Nehmen wir an, die Datei "shoutbox.dat" sieht folgendermassen aus:
Code:
Hallihallo 1. eintrag|#|Ich bins, Diter und ich schreibe den 2. Eintrag|#|Und ich bin der Kaiser von China|#|Hallo wie gehts

Nun zur Erläuterung des Quellcodes:

PHP:
Zeile 1: $max = 20;
Hier wird festgelefet, wie vile Beiträge maximal auf einer Seite angezeigt werden (Diesen Wert kannst du problemlos deinen Wünschen anpassen)

PHP:
Zeile 2: $file = file("shoutbox.dat");
Also dies Funktion kenne ich nicht. :(
Aber ich denke mal, da wird der Inhalt einer Datei (in diesem Fall "shoutbox.dat" (=>die Daten der Shoutbox) zeilenweisse in ein Array geschrieben und zurückgegeben (Also hat $file jetzt den Wert von "shoutbox.dat", in Form eines Arrays und zeilenweise) und es werden warscheinlich alle Eintrage mit einem "|#|" getrennt.)

PHP:
Zeile 3: for ($i=0; $i<$max; $i++) {
Das ist eine For-Schliefe. Das was zwischen den geschweiften Klammern steht wird in diesem Falle 20 mal (siehe $max) ausgeführt.

PHP:
Zeile 4: $output = explode("|#|", $file[$i]);
Explode ist eine funktion, die einen String in ein Array umwandelt, wobei ein Trennzeichen (hier: |#|) angebenen werden muss.
Dann enthält der erste String des Arrays $output den String "Hallihallo 1. eintrag", der 2. "Ich bins, Diter und ich schreibe den 2. Eintrag" usw (siehe "shoutbox.dat" weiter oben)

PHP:
Zeile 5: //hier das ganze was noch für die ausgabe fehlt rein
Hier kannst du sowas reinschreiben wie echo $output[$i]."<br>". Natürlich mit entsprechender Fehlerbehandlungs Routine (Falls z.B. $output[$i] nicht existiert.

PHP:
Zeile 6: }
Hier wird die For-Schleife geschlssen


ICh hoffe ich konnte helfen

Einfach nochmal posten wenn du nix verstehst (oder wenns falsch ist)
 
in shoutbox.dat ist jeder eintrag eine neue zeile, die einzelnen daten pro eintrag werden in diesem beispiel durch |#| getrennt :)

jenachdem wie du die daten in die shoutbox.dat schreibst, kann es passieren, dass sie dir falschrum ausgegeben werden (der älteste zu erst und der neueste gar nicht wenn mehr als 20 beiträge sind).
sollte dies so sein noch die zeile

PHP:
$file = array_reverse($file);

vor die for-schleife schreiben, dies bewirkt, dass das array "umgedreht" wird und nun auch der neueste beitragt, als erstes angezeigt wird.
 
hmm ich krieg das net hin :(

also ich hab die daten so in der shout.dat das sie mit:

<?php
$datenbank = "shout.dat";
$datei = fopen($datenbank, "r");
fpassthru($datei);
?>


ausgegeben werden und auch in der richtigen reihenfolge sind...

wie schaff ich das da nu? wo muss ich das hinschreiben? ich hab die verarbeitung der posts in ner extra datei... da mit rein? oder bei der ausabe?! ich checks net :(

muss ich nu meine komplette ausgabe umschreiben?!
 
maaaaaaaaaan! meine ausgabe sieht nun so aus: er gibt die daten aus... aber eben immernoch alles! :(

<?php
$max = 5;
$file = file("shout.dat");
for ($i=0;$i<$max;$i++){
$ausgabe = explode(",", $file[$i]);
echo $ausgabe[$i] . " ";
}
?>
 
PHP:
<?php
$max = 2;
$input = @file("test.txt")or die("Cannot open test.txt");
for($i = 0; $i < sizeof($input); $i++) {
    if ($i >= $max) break;
    $output = explode(",",$input[$i]);
    echo $output[0]." - ".$output[1]."<br />\n";
}
?>

Edit: Das vorher war unsinn ;)
 
Zuletzt bearbeitet:
Zurück