Textfeld problemmchen

DevEye

Erfahrenes Mitglied
WArum gibt der code in der datei nur die neue zeile zurück und den alten inhalt nicht? stattdessen ein Text: "Array"?

<?php
$datum=Date("d.m.Y");
$temp = file("themen.forum");
$daten="<tr><td><a href=\"$nr.php\">$thema</a></td><td><a href=\"$email\">$name</a></td><td>0</td><td>0</td><td>$datum</td><td>$datum</td></tr>";
$daten = nl2br($daten);
$datenbank = "themen.forum";
$datei = fopen($datenbank,"w");
fwrite($datei, $daten);
fclose($datei);
$datei2 = fopen($datenbank,"a");
fwrite($datei2, $temp);
fclose($datei2);
?>
 
Wenn du in die Datei schreiben willst, ändere die zeile

$datei = fopen($datenbank,"w");
in
$datei = fopen($datenbank,"a");

dann müsste es klappen, da er bei dir vorher den Zeiger immer auf den Anfang setzt, vereinfacht heisst das der inhalt wird gelöscht.


Untenstehend nocheinmal die Erläuterungen:

'r' - öffnet die Datei nur zum Lesen und positioniert den Dateizeiger auf den Anfang der Datei.

'r+' - Öffnet die Datei zum Lesen und Schreiben und setzt den Dateizeiger auf den Anfang der Datei.

'w' - Öffnet die Datei nur zum 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.

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

'a' - Öffnet die Datei nur zum Schreiben. Positioniert den Dateizeiger auf das Ende der Datei. Wenn die Datei nicht existiert, wird versucht sie anzulegen.

'a+' - Öffnet die Datei zum Lesen und Schreiben. Positioniert den Dateizeiger auf das Ende der Datei. Wenn die Datei nicht existiert, wird versucht sie anzulegen.


Hoffe ich konnte helfen.
 
nein, die datei soll ja erst mit dem neuen inhalt überschrieben werden also "w" und später soll der alte inhalt angehängt werden mit "a"...
 
Ups, total überlesen, naja ist ja auch schon spät :)

Das der rest des Textes in einem Text Array steht, passiert weil der Befehl file das nunmal so handhabt.

Ich verstehe nur nicht deine Logik, wenn du mit "r" schreibst, steht doch das neueste ganz oben :confused:
 
Ja das neuste steht zwar oben, aber der rest wird nicht angehängt sondern stattdessen steht da "Array" als text....


:(
 
PHP:
$datum=Date("d.m.Y");
$temp = file("themen.forum");
$daten="<tr><td><a href=\"$nr.php\">$thema</a></td><td><a href=\"$email\">$name</a></td><td>0</td><td>0</td><td>$datum</td><td>$datum</td></tr>";
$daten = nl2br($daten); 
$datenbank = "themen.forum";
$datei = fopen($datenbank,"w");
fwrite($datei, $daten);
fclose($datei);
$datei2 = fopen($datenbank,"a");
FOREACH($temp as $temp) fwrite($datei2, $temp);
fclose($datei2);

Du must jedes Array-Element reinschreiben, nicht den Array selber, der nur ein Handle ist und als Wert "Array" hat.
Ich bin nicht so der Textdateien-Profi, also kann es sein, dass das gar nicht geht, aber du kannst dir ja dann denken, wie´s geht.
 
Zurück