Hallole,
das kannst du wenn du den Datenzeiger mit der Funktion
rewind();
auf den Anfang der Datei setzt.
Jedoch darfst du dann nicht im Append Modus arbeiten weil er sonst alle Daten an das ende der datei setzt.
Hi,
hab folgendes Problem:
Ich schreibe Satz zeilenweise in eine TXT. Geht wunderbar, auslesen geht eigentlich auch wunderbar, nur möcht ichs eben anders haben. Wenn ich so reinschreibe...und das dann so auslese..PHP-Code:$fp = fopen($filename, "a");
fputs($fp,$message);
fclose($fp);
Dann ist der neuste Eintrag immer zuunterst, wenn ich das ausgebe. Ich will den letzten Eintrag aber zuoberst. Habs schon mit anderen Eintragsmodi versucht ala W und W+ oder R und R+, aber dann überschreibt es mir immer die Zeile, die schon drinn steht.PHP-Code:$fp = fopen ($filename, "r") or die ("error when reading $filename");
$output = fread($fp, filesize($filename));
fclose($fp);
Gibts dafür ne einfache Lösung ?
Danke euch vielmals,
cu
Wer sabotiert eigentlich ständig meine Signatur?
Hallole,
das kannst du wenn du den Datenzeiger mit der Funktion
rewind();
auf den Anfang der Datei setzt.
Jedoch darfst du dann nicht im Append Modus arbeiten weil er sonst alle Daten an das ende der datei setzt.
Geändert von Scriff (02.01.2003 um 19:18 Uhr)
Hi,
soweit sogut, doch was ist der Append Modus und wann brauche ich den ?
Dank dir vielmals
cu
Wer sabotiert eigentlich ständig meine Signatur?
Ich mein mit dem Append Modus wenn du deine Dastei zum Schreiben öffnest in dem Modus A+
damit werden deine daten dann immer automatisch an das Ende gesetzt..
d.h du darfst diese Modus dann nicht verwenden wenn du voher deinen Daten zeoger mit rewind auf den Datenanfang stellst.
Eigentlich müsste es auch mit dem R+ Modus gehen.
Achso, okay danke, werd das mal ausprobieren
Vielen Dank
cu
Wer sabotiert eigentlich ständig meine Signatur?
HI,
folgendes...
...funktioniert leider nicht, die bestehende Zeile wird überschriebenPHP-Code:$fp = fopen($filename, "r+");
rewind($fp);
fputs($fp,$message);
fclose($fp);
Hilfe !
Danke und cu![]()
Wer sabotiert eigentlich ständig meine Signatur?
Hmm...wirklich niemand ? Schade![]()
Wer sabotiert eigentlich ständig meine Signatur?
gehts net ?
HM....und wenn du das rewind weglässt und nur im R+ schreibst ..auch net ?
Falls sonst keiner was weiss, könntest du ja die datei einlesen ,zwischenspeichern,neuen datensatz einfügen und das zwischengespeicherte wieder dranhängen..
Hmm ... Du könntest die Datei in eine Variable einlesen, anhand der Zeilenumbrüche in ein Array verwandeln, dieses dann invertieren und dann ausgeben:
Ungetestet, aber vielleicht klappt's ja ...
PHP-Code:$fp = fopen ($filename, "r") or die ("error when reading $filename"); // Datei zum Lesen öffnen
$fileContent = fread($fp, filesize($filename)); // Datei-Inhalt einlesen
fclose($fp); // Datei schliessen
$fileContentElements = explode("\r\n",$fileContent); // Datei-Inhalt anhand der Zeilenumbrüche
// als Elemente in ein Array schieben
array_flip($fileContentElements); // Array umdrehen
while(list($key,$val) = each($fileContentElements)){ // Array-Elemente ausgeben
echo $val;
}
ähm... array_flip() vertauscht den Schlüssel und den Wert eines Arrays. Was Lars meint ist array_reverse()
Und eine Datei zeilenweise in ein Array einlesen funkioniert einfacher mit:
Gruss JanPHP-Code:$fileContentElements = file($filename);
ps: genau den gleichen Fehler (mit flip und reverse) hab ich heute auch schon gemacht![]()
Dann bin ich ja beruhigt.Original geschrieben von Stuck Mojo
genau den gleichen Fehler (mit flip und reverse) hab ich heute auch schon gemacht![]()
![]()
Hi,
also vielen Dank für die vielen und schnellen Lösungsvorschläge, ihr seid echt super, und das noch um diese Zeit *staun*.
Ich werd mir das ganze morgen anschauen und dann bescheid geben, obs geklappt hat
Und jetzt *gähn*...schlafen
gudneit
Wer sabotiert eigentlich ständig meine Signatur?
Hi,
bei mir hats nicht ganz geklappt, liegt wohl daran dass ich dieses file() nicht raffe. Wenn ich diese Funktion brauche, ist dann der ganze Text zeilenweise eingelesen und in einem Array ? Kann ich dann, wenn
den Code so auslesen:PHP-Code:$content = file($filename);
?PHP-Code:print $content[0];
Hat bei mir nicht geklappt
Weil dann könnte ich ja einfach die Zeilen zählen und dann die 5 letzten jeweils ausgeben lassen, dann kann ich nicht nur bestimmen, wieviel ich ausgeben will, sondern ich könnte sie sogar mischen, ohne Reihenfolge.
Aber eben..könnte, dieses file() funzt ja nicht ganz..
Gibts dafür eine Erklärung ?
Wer sabotiert eigentlich ständig meine Signatur?
Probiere es mal so, das sollte Dir die letzten fünf Datensätze ausgeben (den Kram mit file() habe ich rausgelassen):
PHP-Code:$fp = fopen ($filename, "r") or die ("error when reading $filename"); // Datei zum Lesen öffnen
$fileContent = fread($fp, filesize($filename)); // Datei-Inhalt einlesen
fclose($fp); // Datei schliessen
//$fileContentElements = file($filename); // Das wäre Stuck Mojos Variante gewesen
$fileContentElements = explode("\r\n",$fileContent); // Datei-Inhalt anhand der Zeilenumbrüche
// als Elemente in ein Array schieben
array_reverse($fileContentElements); // Array umdrehen
for($=0;$i<4$i++){ // Nur fünf Werte ausgeben
while(list($key,$val) = each($fileContentElements)){ // Array-Elemente ausgeben
echo $val;
}
}
HI,
schade, geht irgendwie nicht. Den kleinen Fehler hab ich noch ausgebügelt, aber das mit den letzten fünf funzt nicht ganz.¨
Ich werd da jetzt noch n Stündchen rumprobieren, vielleicht find ich ja selber noch was
Bis dann ist das mal erledigt
Anyway vielen Dank für eure Hilfe !
cu
Wer sabotiert eigentlich ständig meine Signatur?
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)