Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Textfiles nach Datum Sortieren? [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




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 ...

 
Abraxax
20-01-2003, 18:27 
 
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 :)

 
Abraxax
20-01-2003, 18:42 
 
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:)

 
Abraxax
20-01-2003, 21:40 
 
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 :(

 
Abraxax
21-01-2003, 15:04 
 
wo ist zeile 5 ?

 
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

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:14 Uhr.