• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Textdatei als Array einlesen und wieder speichern

eismann90

New member
Hallo, ich bin dabei ein Gästebuch zuschreiben

Die Einträge sollen in einer Textdatei einfach abgespeichert werden.

gb.txt
Code:
<a href="blabla">Name</a><p>Kommentar 1</p>
<a href="blabla">Name</a><p>Kommentar 2</p>


Da ich aber immer den neusten Eintrag an der Spitze haben möchte, mache ich das ganze mit einer Array und mittels array_unshift um den Eintrag an die erste Position des Array zu stellen. Zusaätzlich will ich nicht mehr als 30 Einträge, daher verwende ich noch unset um immer gleich die letzte Position zu löschen...

gb_eintragen.php
PHP:
$kommentare = array();
$kommentare = file("gb.txt");

unset($kommentare[30]);

$daten="<a href=\"blabla\">Name</a><p>blablabla wird per POST gemacht...</p>";
array_unshift($kommentare,$daten);

$speicher = fopen("gb.txt","w");
fwrite($speicher, $kommentare);
fclose($speicher); 

for($i=0; $i<=30; $i++) {
	echo $kommentare[$i];
}


Ich hoffe ihr könnt mir ein wenig auf die Sprünge helfen...

Gruß Phil
 
MySQL ist verfügbar...
wollte es aber jetzt erst mal in PHP versuchen...

gb_schreiben.php
PHP:
$kommentare=file("gb.txt");
$daten="Inhalt blabla";
array_unshift($kommentare,$daten);
implode("\n",$kommentare);
$buch=fopen("gb.txt","w");
fwrite($buch, $kommentare);
fclose($buch);

nur ich bekomme nur ein ,,Array" ausgespuckt, also in meiner gb.txt steht dann einfach nur ,,Array". Das verstehe ich jetzt nicht ganz.
 
Du musst Deinen Kommentar Array noch durchlafen, und jeden einzelnen
Kommentar in die Textdatei eintragen:

PHP:
// Alles wie gehabt..
// ....
$buch=fopen("gb.txt","w"); 
foreach ($kommentare as $kommentar) {
      fwrite($buch, $kommentar."\n"); 
}
fclose ($buch);

EDIT: Ich sehe gerade, dass Du das ja mit implode realisieren wolltest. Das geht selbstverständlich auch, liefert jedoch einen Rückgabewert. Also so:
PHP:
$text = implode("\n",$kommentare);
Bei unshift ist dies nicht nötig, da dort mit der Referenz des Arrays gearbeitet wird.
 
Zuletzt bearbeitet:
Zurück
Oben