Gästebuch auf Dateibasis - Lesen Speichern

chmee

verstaubtes inventar
Premium-User
Hi, Ihr Wissenden :-) Nachdem Ihr mir schon bei den letzten Fragen schnell und vor Allem kompetent helfen konntet, lasse ich es mir nicht nehmen, wieder zu fragen :

Ich habe das Gästebuch auf Basis dieses Scripts erstellt. Das Problem ist, dass die Einträge an die Datei angehängt werden,
somit ist der neueste Eintrag unten, nicht oben.

Ich habe die Sache umzudrehen versucht, aber bekomme beim String $daten=$neu+$alt immer das Ergebnis $neu+"0",
obwohl ich beim echo $alt; den Inhalt richtig dargestellt bekomme.

PHP:
$datei = fopen("eintraege.txt","r+");
$alt=fread($datei,filesize("eintraege.txt"));
$eintrag = ereg_replace("\n","<br>",$eintrag);
$eintrag = ereg_replace("<*>","",$eintrag); 
$eintrag = stripslashes($eintrag);
$date=date("d.m.Y");
$daten = "<hr><a class=\"small_black\">$name - $date</a><br><a class=\"small\">$eintrag</a><br>\n\n"+$alt;
fwrite($datei,$daten); 
fclose($datei);

Entweder also direkt diesen Fehler zu beheben helfen oder Alternativvorschläge !

Achja, $eintrag = ereg_replace("<*>","",$eintrag); ist sicherlich auch falsch, wollte damit HTML-Code aussieben :-)

Danke für Eure Hilfe. mfg chmee
 
Zuletzt bearbeitet:
Warum so kompliziert, wenns auch einfach geht? (Was die HTML Tags angeht)

[phpf]strip_tags[/phpf]

Und um die korrekte Reihenfolge darzustellen, würde ich es beim Auslesen umkehren, nicht beim reinschreiben (sonst müsstest du statt es einfach anzuhängen, komplett auslesen, den neuen Eintrag nach vorne setzen und wieder alles reinschreiben = Mehr Serverlast).
 
Danke für den ersten Tip.

Zum Zweiten :
Es gibt keinen echten Auslesevorgang, die "eintraege.txt" wird einfach nur per print() ausgegeben. Deswegen - denke ich - ist es am Sinnvollsten, einfach nur $Datei=$Neu+$Alt wieder in die Datei zu schreiben. Serverökonomie hin und her, so oft wird die Seite nicht besucht, ergo ist die Last vertretbar.

Aber um zum Problem zurückzukommen. Kann mir jemand erklären, warum $alt - wenn ich es an ein String anhänge - 0 ergibt ?

mfg chmee
 
HA !

Problem erkannt ! Strings werden nicht per + zusammengesetzt, sondern $Neu ="$Neu$alt";
Simpel und böshaft :-)

mfg chmee
 
Danke Euch Beiden :)

Habe noch ein Problem gefunden -> Code Oben !
Wenn ich erst Fread() benutze, verändert sich der Zeiger, und bei Fwrite ist dieser
am Ende der Datei. Hätte ihn gerne wieder auf Null gesetzt, wusste aber nicht wie..

Also ist es nun bei mir 2x FOpen() und FClose() - einmal $alt einlesen , dann $Neu schreiben -
Nicht ökonomisch aber Funktioniert ! man lernt nie aus.

mfg chmee
 
Zurück