# Zeilen in Datei hinzufügen



## topo (28. Mai 2008)

Hallo,

ich hab ein Problem. Und zwar möchte ich in eine .txt-Datei zeilen nacheinander eintragen lassen.
ich möchte aber die zeile, die neu hinzugefügt werden soll, an den *anfang* der datei (also vor den anderen zeilen) setzen.
funktioniert aber nicht, wieso?


```
$fp = "datei1.txt";
//datei öffnen
if ($datei = fopen($fp, "r")) {
  while (!feof($datei)) {
    $zeichen = fgets($datei);
    }
}
$datei = fopen($fp, "r+");

//in datei datei1.txt schreiben
$text = "text\r\n\n";
fputs($datei, $text);
fclose($datei);
```

wenn ich eine zeile eingetragen habe, dann wird sie beim nächsten mal einfach ersetzt.
mit a+ statt r+ funktioniert es gut, aber die zeile wird eben nur am ende eingetragen.


----------



## splasch (28. Mai 2008)

Ja weil auch das a oder + für append steht allso hinten dranhängen. Das was du vor hast ist net so einfach und geht auch net so wie du dir das vorstellst.

Ein Lösung Ansatz were man liest die Ganze Text datei in ein Array ein manipuliert das array und schreib das mit w neu zurück.  Bei w wird der alte Inhalt komplett überschrieben. Siehe dir dazu auch den befehl file_get_contents an.

http://at.php.net/manual/de/function.file-get-contents.php

Alles über schreib und Lese Möglichkeiten unter
http://at.php.net/filesystem

Mfg Splasch


----------



## Da_Chris (28. Mai 2008)

geht viel einfacher. Schau dir mal den zweiten parameter von fopen() an


----------



## topo (28. Mai 2008)

danke für die antworten. ich hab jetzt eine einfache methode gefunden. und zwar lese ich zunächst die datei aus, dann schreibe ich die zeile aus der datei zusammen mit der neuen zeile in eine variable:
$text = "text\r\n\n";
---> text = $text.$zeilen_aus_datei;

und dann einfach wieder in die datei einschreiben. so funktionierts


----------

