test: dateien

Hallo
ich hab ein Problem, und zwar will etwas in eine txt datei schreiben aber an den Anfang der Datei. Alles was danach kommt soll nich überschreiben werden sondern einfach weiterrutschen
kann mir jemand helfen?

  1. Hi,
    also ich glaube das dürfte dir weiterhelfen:
    http://www.php.net/manual/de/function.fopen.php
    Bis denn,
    Toby

    1. Hi,
      also ich glaube das dürfte dir weiterhelfen:
      http://www.php.net/manual/de/function.fopen.php
      Bis denn,
      Toby

      ne sorry tuts nicht
      weil egal welches attribut ich nehm (r, w, a...), wenn der zeiger am anfang ist wird alles danach überschrieben ich will aber nicht das des überschreiben wird
      wahrscheinlcih muss ichs so machen das ich den Inhalt auslese und dann am neuen Inhalt daranhänge
      kann mir vielleicht jemadn sagen wie ich sowas machen kann?wiel mit fgets kann ich immer nur eine zeile auslesen ich will aber alle zeilen

  2. Guten Abend,

    da gibts hier schon gaaanz viele Postings dazu.

    Zum Verfahren:

    Textdatei mit $zeilen=file("textdatei.txt"), einlesen.
    Das ergibt in $zeilen ein Array aller Zeilen. Jede Zeile steht in einem Element.

    Mit $neueZeilenZahl = array_unshift($zeilen,$neueZeile1[,$neueZeile2]); fügst Du dann eine Zeile ein. Vergiss nicht den Zeilenabschluss (CRLF).

    z.B. mit

    $ausgabe=implode($zeilen);
    $fp=fopen("textdatei.txt","w");
    if ($fp) or die("kann nicht zurückschreiben");
    {
      $ok=fwrite($fp,$ausgabe,strlen($ausgabe));
    }

    kannst Du es dann zurückschreiben.

    Man könnte auch eine Schleife auf das Array ($zeilen)legen und mit fputs() arbeiten.

    Grüße

    Tom

    1. Guten Abend,

      da gibts hier schon gaaanz viele Postings dazu.

      Zum Verfahren:

      Textdatei mit $zeilen=file("textdatei.txt"), einlesen.
      Das ergibt in $zeilen ein Array aller Zeilen. Jede Zeile steht in einem Element.

      Mit $neueZeilenZahl = array_unshift($zeilen,$neueZeile1[,$neueZeile2]); fügst Du dann eine Zeile ein. Vergiss nicht den Zeilenabschluss (CRLF).

      z.B. mit

      $ausgabe=implode($zeilen);
      $fp=fopen("textdatei.txt","w");
      if ($fp) or die("kann nicht zurückschreiben");
      {
        $ok=fwrite($fp,$ausgabe,strlen($ausgabe));
      }

      kannst Du es dann zurückschreiben.

      Man könnte auch eine Schleife auf das Array ($zeilen)legen und mit fputs() arbeiten.

      Grüße

      Tom

      danke für die Hilfe aber es ged immer noch nicht richtig

      $zeilen=file("data.txt");                         <--meine Datei
      $add = $gbname."#".$gbmail."#".$gbhp."#".$gbtext; <--der string
      $CRLF = chr(13).chr(10);                          <--Zeilenumbruch
      $add = $add.$CRLF                               <--str+zeilenumbrunch
      array_unshift($zeilen,$add,);     <-- hier hab ich nen fehler (parse)

      $ausgabe=implode($zeilen);        <-- und dann halt wie beschreiben

      $fp=fopen("data.txt","w");
      if ($fp) or die("kann nicht zurückschreiben");
      {
        $ok=fwrite($fp,$ausgabe,strlen($ausgabe));
      }

      kann mir nochmla jemand helfen?

      1. Guten Abend,

        da gibts hier schon gaaanz viele Postings dazu.

        Zum Verfahren:

        Textdatei mit $zeilen=file("textdatei.txt"), einlesen.
        Das ergibt in $zeilen ein Array aller Zeilen. Jede Zeile steht in einem Element.

        Mit $neueZeilenZahl = array_unshift($zeilen,$neueZeile1[,$neueZeile2]); fügst Du dann eine Zeile ein. Vergiss nicht den Zeilenabschluss (CRLF).

        z.B. mit

        $ausgabe=implode($zeilen);
        $fp=fopen("textdatei.txt","w");
        if ($fp) or die("kann nicht zurückschreiben");
        {
          $ok=fwrite($fp,$ausgabe,strlen($ausgabe));
        }

        kannst Du es dann zurückschreiben.

        Man könnte auch eine Schleife auf das Array ($zeilen)legen und mit fputs() arbeiten.

        Grüße

        Tom

        danke für die Hilfe aber es ged immer noch nicht richtig

        $zeilen=file("data.txt");                         <--meine Datei
        $add = $gbname."#".$gbmail."#".$gbhp."#".$gbtext; <--der string
        $CRLF = chr(13).chr(10);                          <--Zeilenumbruch
        $add = $add.$CRLF                               <--str+zeilenumbrunch
        array_unshift($zeilen,$add,);     <-- hier hab ich nen fehler (parse)

        $ausgabe=implode($zeilen);        <-- und dann halt wie beschreiben

        $fp=fopen("data.txt","w");
        if ($fp) or die("kann nicht zurückschreiben");
        {
          $ok=fwrite($fp,$ausgabe,strlen($ausgabe));
        }

        kann mir nochmla jemand helfen?

        ach mist
        selbst wenn ich das Komma nach $add bei array_unshift weg mach geth es immmer noch nicht

        1. Guten Morgen,

          ich habe doch lange überlegen müssen, aber dann habe ich mir meine eigene Ttpp-Liste mal durchgelesen und da stand:

          PHP-Fehler:

          • Parse Error wird oft eine Zeile später angezeigt, weil der vorangehenden ein Semikolon fehlt.
          • Parse-Error wird für hinter dem Code-Ende angezeigt. Dann fehlt irgendwo oberhalb ein String-Abschlusszeichen.

          N, und da war es dann leicht, das zu sehen, was nicht da ist...

          $zeilen=file("data.txt");                         <--meine Datei
          $add = $gbname."#".$gbmail."#".$gbhp."#".$gbtext; <--der string
          $CRLF = chr(13).chr(10);                          <--Zeilenumbruch
          $add = $add.$CRLF                               <--str+zeilenumbrunch

          ^
          da fehlt was ----------+

          array_unshift($zeilen,$add,);     <-- hier hab ich nen fehler (parse)

          ^
          da ist was zuviel---------------+

          $ausgabe=implode($zeilen);        <-- und dann halt wie beschreiben

          $fp=fopen("data.txt","w");
          if ($fp) or die("kann nicht zurückschreiben");
          {
            $ok=fwrite($fp,$ausgabe,strlen($ausgabe));
          }

          fclose($fp); // habe ich vergessen.Sollte man aber immer schreiben, auch wenn einige meinen "das macht doch das Script am Ende automatisch...".

          So, nun funktioniert es hoffentlich.

          Grüße

          Tom

          1. Guten Morgen,

            ich habe doch lange überlegen müssen, aber dann habe ich mir meine eigene Ttpp-Liste mal durchgelesen und da stand:

            PHP-Fehler:

            • Parse Error wird oft eine Zeile später angezeigt, weil der vorangehenden ein Semikolon fehlt.
            • Parse-Error wird für hinter dem Code-Ende angezeigt. Dann fehlt irgendwo oberhalb ein String-Abschlusszeichen.

            N, und da war es dann leicht, das zu sehen, was nicht da ist...

            $zeilen=file("data.txt");                         <--meine Datei
            $add = $gbname."#".$gbmail."#".$gbhp."#".$gbtext; <--der string
            $CRLF = chr(13).chr(10);                          <--Zeilenumbruch
            $add = $add.$CRLF                               <--str+zeilenumbrunch
                                   ^
            da fehlt was ----------+

            array_unshift($zeilen,$add,);     <-- hier hab ich nen fehler (parse)

            ^
            da ist was zuviel---------------+

            $ausgabe=implode($zeilen);        <-- und dann halt wie beschreiben

            $fp=fopen("data.txt","w");
            if ($fp) or die("kann nicht zurückschreiben");
            {
              $ok=fwrite($fp,$ausgabe,strlen($ausgabe));
            }

            fclose($fp); // habe ich vergessen.Sollte man aber immer schreiben, auch wenn einige meinen "das macht doch das Script am Ende automatisch...".

            So, nun funktioniert es hoffentlich.

            Grüße

            Tom

            au man da hätt ich so auch drauf kommen müssen
            also fclose habcih schon am ende stehen ich habs halt ned gepostet
            aber danke für die hilfe