Uri: neue zeile in textdatei schreiben

Eine Textdatei wird ausgelesen
$alt=file('bla.txt');
dann werden die Werte im Array $alt geändert,
und dann sollen die aktualisierten Werte wieder in die Datei geschrieben werden.

$fp=fopen('bla.txt','w+');
fwrite($fp,$neu);

Frage: was kommt hinter
$neu=
damit auch die Zeilenumbrüche eingetragen werden? \n geht schonmal nicht.

  1. Eine Textdatei wird ausgelesen
    $alt=file('bla.txt');
    dann werden die Werte im Array $alt geändert,
    und dann sollen die aktualisierten Werte wieder in die Datei geschrieben werden.

    $fp=fopen('bla.txt','w+');
    fwrite($fp,$neu);

    Frage: was kommt hinter
    $neu=
    damit auch die Zeilenumbrüche eingetragen werden? \n geht schonmal nicht.

    Das bedeutet, daß du anscheinend von $alt nach $neu die Zeilenumbrüche rausgenommen hast, da file() sie mit einliest. Du mußt also entweder deine Bearbeitung ändern, oder in einer Schleife alle Zeilen einzeln in die Datei zu scheiben:

    for (i=0; i<sizeof($neu); $i++)
     {
      fputs($fp,$neu[$i] . "\n");
     };

    Gruß,
      soenk.e

    1. Das bedeutet, daß du anscheinend von $alt nach $neu die Zeilenumbrüche rausgenommen hast, da file() sie mit einliest.

      öhm...und wie? file() speichert doch die datei in einem array, und jede zeile kriegt ein eigenes feld. Die Bearbeitung sieht nur so aus: $alt[0]=$alt[0]+1;

      1. Hallo, <-- Begruessung

        Das bedeutet, daß du anscheinend von $alt nach $neu die Zeilenumbrüche rausgenommen hast, da file() sie mit einliest.

        öhm...und wie? file() speichert doch die datei in einem array, und jede zeile kriegt ein eigenes
        feld. Die Bearbeitung sieht nur so aus: $alt[0]=$alt[0]+1;

        Dann ist der Zeilenumbruch durch den impliziten Typecast schonmal weg geschnitten. Du musst
        eh den Array Zeilenweise durchgehen, also schreib doch einfach ein \n mit, wenn eins fehlt.

        Gruesse,
         CK

        1. Ok, jetzt gehts. Bis auf:

          $alt=file('bla.txt');
          if ($wahl='0')
          {$alt[0]=($alt[0]+1) . "\n";}
          else if ($wahl='1')
          {$alt[1]=($alt[1]+1);}
          $neu=$alt[0] . $alt[1];
          $fp=fopen('bla.txt','w+');
          fwrite($fp,$neu);
          fclose($fp);

          Den Wert $wahl kriegt das Programm per Formular:
          <form action='blabla.php' method='post'>
          <input type='radio' name='wahl' value='0'>
          <input type='radio' name='wahl' value='1'>
          <input type='submit'>
          </form>

          aber es wird immer nur $alt[1] geändert. Und wieso?

          1. Hi,

            ohne mich da jetzt lange mit dem zu beschäftigen, was dein Skript macht:

            if ($wahl='0')
            else if ($wahl='1')

            Hier sollte wohl in beiden Zeilen das "==" für den Vergleich statt des "=" für eine Zuweisung stehen, oder?

            Grüße,
            nobody

            1. Hier sollte wohl in beiden Zeilen das "==" für den Vergleich statt des "=" für eine Zuweisung stehen, oder?

              muäääh....wie peinlich...