Archiv verlassen und diese Seite im Standarddesign anzeigen : Textfiles nach Datum Sortieren?
Diggicell 20-01-2003, 18:21 Grüßt euch...!
Habe vor kurzem erst mit PhP angefangen , desto stolzer bin ich , das ich schon ein kleines News System geschrieben hab. Das Newssystem Bassiert auf einem Textfile. Ich benutze den modi w+ um die eingegebenen Daten zu sichern. Leider ist es bei w+ nur möglich einen Beitrag zu schreiben der den Davorgeschriebenen Überschreibt. Gibt es eine Möglichkeit das PHP die daten irgendwie Sortiert und übereinander schreibt (die neusten Einträge nach oben)?. Oder sollte ich einen anderen modi wählen?
Bitte antwortet schnell :)
:rocks: DiggiCell :rocks:
MelloPie 20-01-2003, 18:26 Du könntest mit fopen("datei","a");
neue daten anhängen
beim auslesen dann die Funktion file() benutzen und das array umgekehrt sortieren ...
probier mal r+
'r+' - Öffnet die Datei zum Lesen und Schreiben und setzt den Dateizeiger auf den Anfang der Datei.
wobei hingegen w+
'w+' - Öffnet die Datei zum Lesen und Schreiben und setzt den Dateizeiger auf den Anfang der Datei sowie die Länge der Datei auf 0 Byte. Wenn die Datei nicht existiert, wird versucht sie anzulegen.
nachzulesen unter http://de.php.net/manual/de/function.fopen.php
Diggicell 20-01-2003, 18:37 Das mit r+ geht wahrscheinlich nicht , weil dieser modi leider auch den zuletzt geschriebenen beitrag überschreibt... :). Koennteste deine Variante noch weiter beschreiben Mello ?.
Thx für die Schnelle antwort :)
wenn du eine neue zeile in deine textdatei schreibst, mache das so.
nicht getestet
// so schreibt er immer hinten weiter.
$fp = fopen("deinedatei.txt", "a");
fputs($fp, "der zeileninhalt");
zum auslesen nimm das.
http://de.php.net/manual/de/function.array-reverse.php
// datei in array einlesen
$dateiinhalt = file("deinedatei.txt");
// array umgekehrt sortieren
$dateiinhalt = array_reverse($dateiinhalt);
// optional wieder zusammenfassen
echo implode ("<br><br>", $dateiinhalt);
Diggicell 20-01-2003, 19:45 Vielen Dank , werde ich mal ausprobieren... Heißt aber nicht das die anderen ihre Varianten net posten können :)
Diggicell 20-01-2003, 20:05 Bzw. Was meinst du mit Zeileninhalt ? Die eingaben die ich im Formular abgegeben hab?
mrhappiness 20-01-2003, 20:11 schätzungsweise ja :)
is übrigens die wahrscheinlich beste lösung (zumindest fällt mir - abgesehen von sql ;) - nix beseeres ein, was aber nix heißen muss)
hast du denn kein sql?
Diggicell 20-01-2003, 20:32 Schon , aber da steige ich noch Weniger durch ;). Habe das jetzt mal ausprobiert , und bei der ausgabe hat sich NICHTs verändert. Der neuste Beitrag überschreibt immernoch net letzten... :(. Beziehungsweise , wenn ich den modi bei a+ lasse schreibt er garnichts mehr...
Hier mal meine Php codes :
data.dat ist die Datei die die Beiträge Speichert...
hier ist guestbook.php , welche die daten nachher ausgibt(mein newssystem basiert eigentlich auf meine gästebuch,deswegen guestbook *g*:
<html>
<head>
</head>
<body>
<center><br>
<br><br>
<?php
$datenbank = "daten.dat";
$datei = fopen($datenbank,"r");
fpassthru($datei);
?>
</body>
</html>
Und hier gb.php :
<?php
$date=date("j.n.Y");
$tag=date("w");
$tage = array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
$daten="$eintrag<br><br> von <a href=mailto:$email>$name</a> Eingesendet am <b> $tage[$tag] </b> dem $date <br>";
$datenbank = "daten.dat";
$datei = fopen($datenbank,"w+");
fwrite($datei, $daten);
?>
Jut , das hat geklappt :)
<a href="index.php">Zurück zur Homepage</a>
Das sind jetzt die ORIGINAL dateien...Ich versteh nicht so recht wo ihr dort eure Zeilen einbauen Wollt :)
mrhappiness 20-01-2003, 20:52 gb.php<?php
$date=date("j.n.Y");
$tag=date("w");
$tage = array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
$daten="$eintrag<br><br> von <a href=mailto:$email>$name</a> Eingesendet am <b> $tage[$tag] </b> dem $date <br>";
$datenbank = "daten.dat";
$datei = fopen($datenbank,"a+");
fwrite($datei, $daten);
?>
Jut , das hat geklappt <img src="images/smilies/smile.gif" border="0" alt="">
<a href="index.php">Zurück zur Homepage</a>
guestbook.phphtml>
<head>
</head>
<body>
<center><br>
<br><br>
<?php
$datenbank="daten.dat";
$eintraege=file($datenbank);
array_reverse($eintraege);
for($i=0;$i<count($eintraege);$i++)
echo "$eintraege[$i]<p />";
?>
</body>
</html>
Diggicell 20-01-2003, 21:32 Vielen Dank für Tunen :)
Allerdings sagt der mir folgenden Fehler : Warning: Argument to array_reverse() should be an array in /home/www/web216/html/Versuche/guestbook.php on line 11
mrhappiness 20-01-2003, 21:34 rechnung rausgenommen, sonst meckert der herr finanzamtliebhaber abraxax wieder :DnpÄndere "$eintrage=" in "$eintraege="; immer dieser trugvällerdoivvehl
Diggicell 20-01-2003, 21:39 Coooole sache , nochmals Vielen Dank:)
Original geschrieben von Diggicell
Vielen Dank für Tunen :)
Allerdings sagt der mir folgenden Fehler : Warning: Argument to array_reverse() should be an array in /home/www/web216/html/Versuche/guestbook.php on line 11
schreibe mal STATT array_reverse($eintraege);
das hier.
// die zuweisung fehlte.
$eintraege = array_reverse($eintraege);
Diggicell 20-01-2003, 22:18 Der tuts aber immernoch Falsch anordnen... ich mögchte ja gerne die neusten news oben haben und die ältesten unten :)
mrhappiness 20-01-2003, 22:20 auch nach der änderung die abraxax gemacht hat (hab sie ihm extra übrig gelassen ;))?
Diggicell 21-01-2003, 15:00 Hmm , nun zeigt der mir n parse fehler auf zeile 5 an :(
Diggicell 21-01-2003, 20:29 War heut nachmittag an nem anderen REchner um das script zu testen... Zurück an meinem gehts...Drum: Vielen Dank & Thread schließen :D
|
-
- |