peter: in neue zeile einer datei schreiben

Hi,

hab mir ein Projekt angelegt, das ich online per PHP bearbeiten kann.
Nun will ich die Änderungen, die ich online durchführe, in einer LOG-Datei speichern.
Dazu hab ich die Datei "log.dat" angelegt.
Neue Einträge in dieser Datei sollen nun aber in einer neuen Zeile stehen.
Das funktioniert, wenn ich in den String, der hinzugefügt wird einen Zeilenumbruch einfüge:

**************************
$aenderung='
Aktion 1';

$log=fopen('log.dat','a');
fputs($log,$aenderung);
fclose($log);

$aenderung='
Aktion 2';

$log=fopen('log.dat','a');
fputs($log,$aenderung);
fclose($log);
***************************

Ergebnis:

Aktion 1
Aktion 2

Gibt es eine andere Möglichkeit, den übergebenen Inhalt in eine neue Zeile zu schreiben????

Ich möchte gerne den String ohne Zeilenumbruch übergeben:

*****************
$aenderung='Aktion 1';

statt:

$aenderung='
Aktion 1';

*****************

In der Datei soll das dann aber trotzdem in einer neuen Zeile stehen.

Finde einfach nichts, wie das geht.
Hab auch schon mal ein "\n" reingemacht, das stand dann aber so in der Datei drin.

Für eure Hilfe vielen Dank

peter

  1. Moin peter;

    $aenderung='
    Aktion 1';

    Finde einfach nichts, wie das geht.
    Hab auch schon mal ein "\n" reingemacht, das stand dann aber so in der Datei drin.

    $action='Aktion 1'; # Kein muss, nur variabel

    $aenderung=sprintf("%s\r\n",$action);

    regds
    Mike©

    --
    Freunde kommen und gehen. Feinde sammeln sich an.
    1. Hi Mike,

      vielen Dank erstmal.

      So ganz steig ich zwar noch nicht durch, aber das krieg ich schon hin.
      Wälze grade meine Bücher und versuch printf() und sprintf() zu verstehen.
      Vom Prinzip her eigentlich klar, nur werd ich mir die Feinheiten jetzt mal in Versuchen aneignen müssen.

      Im Endeffekt ist es ja aber auch wieder ein String mit nem Zeilenumbruch drin, der übergeben wird.

      Eine Anweisung, um einen String ohne Zeilenumbruch direkt in der Datei in ne neue Zeile zu setzen, scheints tatsächlich nicht zu geben ?

      grüße
      peter

      1. Hallo peter,

        Eine Anweisung, um einen String ohne Zeilenumbruch direkt in der Datei in ne neue Zeile zu setzen, scheints tatsächlich nicht zu geben ?

        Nein. Denn für eine neue Zeile ist ein Zeilenumbruch absolut unentbehrlich.

        Grüße

        Marc Reichelt || http://www.marcreichelt.de/

        --
        Linux is like a wigwam - no windows, no gates and an Apache inside!
        Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
        http://emmanuel.dammerer.at/selfcode.html
        1. Hi
          und vielen Dank an ALLE !!!

          Nein. Denn für eine neue Zeile ist ein Zeilenumbruch absolut unentbehrlich.

          Naja, daß ein Zeilenumbruch reinmuß war mir schon klar.
          Dachte nur an ne Funktion, die den automatisch reinmacht und dann noch den String reinsetzt.
          So ne Funktion gibts also nicht, ich muß den Zeilenumbruch "von Hand" reinmachen. OK.

          Die Lösungen von dedlfix find ich dabei auch am sinnvollsten. So hatt ich mir das auch vorgestellt nur hats bei mir nicht funktioniert. Den Fehler, den ich gemacht hatte ( ' statt " ), hat mir Axel vor Augen geführt. Thanks.

          Nichtsdestotrotz wars auch interressant, sich mal mit sprintf() zu beschäftigen. Werd ich sicher nochmal brauchen können.

          Grüße
          peter

    2. echo $begrüßung;

      $aenderung=sprintf("%s\r\n",$action);

      Nun ja... für das einfache Anhängen eines String an einen anderen ist so ein sprintf überdimensioniert.

      $aenderung = $action . "\r\n";

      Übrigens:

      fwrite("\r\n"); // neue Zeile erzeugen
        fwrite($action);

      oder

      fwrite("\r\n" . $action);

      wären auch zielführend.

      echo "$verabschiedung $name";

  2. Hallo,

    Ich möchte gerne den String ohne Zeilenumbruch übergeben:

    $aenderung='Aktion 1';

    In der Datei soll das dann aber trotzdem in einer neuen Zeile stehen.

    Wie soll das gehen? Ich formuliere das mal anders: "Ich will keine neue Zeile erzeugen, aber trotzdem eine haben." Merkst Du was?

    Finde einfach nichts, wie das geht.
    Hab auch schon mal ein "\n" reingemacht, das stand dann aber so in der Datei drin.

    Nein, Du hast kein "\n", sondern ein '\n' reingemacht. Das ist ein Unterschied. Lies http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.single und http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.double.

    viele Grüße

    Axel