Philipp: Fehler im Programm?!

Hi!

Ich habe den Tipp für meinem letzten Beitrag (Neues an den Anfang der Datei) befolgt und folgendes Programm geschrieben:

$Name = $_POST['Name'];

//Datei mit altem Inhalt öffnen (w+)
$messages = fopen("messages.txt","w+");
fread($messages,filesize("messages.txt"));
fclose($messages);
 //Neue Variable Erstellen neu.alt
$Name = $Name."<p>";
$Einträge = $Name.$messages;
 //Neue Variable in Datei mit altem Inhalt schreiben
$messages = fopen("messages.txt","w+");
fread($messages,filesize("messages.txt"));
fwrite($messages,$Einträge);
fclose($messages);

Wenn ich nun die Datei messages.txt öffne, wird folgendes ausgegeben:

Eingegebener Name

Resource id #1

Es soll jedoch der eingegebene Name und darunter die älteren Namen stehen!

Kann mir jemand den Fehler im Programm sagen? Ich kann ihn nämlich leider nicht finden!

Danke im Vorraus!

Philipp

  1. Hallo

    $Einträge = $Name.$messages;

    Gibst du $Einträge später aus?
    Wenn ja, dann bedenke auch, dass $messages bei dir ein File-Handle ist und somit die Ausgabe korrekt wäre.
    Wenn nein, was gibst du aus?

    Grüße
      David

    --
    >>Nobody will ever need more than 640k RAM!<<
    1981 Bill Gates
    1. Gibst du $Einträge später aus?

      Hi!

      Ich gebe auf einer anderen Seite die Datei messages.txt aus!

      Philipp

      1. Hallo

        Ich gebe auf einer anderen Seite die Datei messages.txt aus!

        und wie machst du das?

        Aber die genannte Zeile ist schon daran "Schuld", dass du jene Ausgabe bekommst. Der Fehler ist auch darin, dass du $messages an $Eintraege hängst.

        Warum öffnest du die Datei eigentlich in dem Code bei dem ersten Teil? Du liest dort schließlich nichts aus und schreibst auch nichts hinein...

        Grüße
          David

        --
        >>Nobody will ever need more than 640k RAM!<<
        1981 Bill Gates
  2. Hi!

    Hallo

    Kann mir jemand den Fehler im Programm sagen? Ich kann ihn nämlich leider nicht finden!

    IMHO sind da einige Sachen drin, von denen ich glaube, dass du das _so_ nicht willst.

    $Name = $_POST['Name'];

    //Datei mit altem Inhalt öffnen (w+)

    Du weisst schon, dass w+ die datei auf 0 bytes setzt -> leere datei?
    http://www.php.net/function.fopen

    $messages = fopen("messages.txt","w+");
    fread($messages,filesize("messages.txt"));
    fclose($messages);

    Ich denke folgendes wäre besser:
    $file = fopen("messages.txt","w+");
    $messages = fread($file,filesize("messages.txt"));
    fclose($file);

    -> alter content ist nun in Variable $messages

    //Neue Variable Erstellen neu.alt
    $Name = $Name."<p>";
    $Einträge = $Name.$messages;

    //Neue Variable in Datei mit altem Inhalt schreiben

    $file = fopen("messages.txt","w+");

    fread($messages,filesize("messages.txt"));

    wozu liest du hier die datei nochmal aus?

    fwrite($file,$Einträge);
    fclose($file);

    Danke im Vorraus!

    Philipp

    good luck,
    Philip

    PS: Ich weiß zwar nicht genau, was du willst, aber ich denke das müsst hinkommen...

    --
    :::::::: http://www.metrox.de ::::::::
    1. Hallo Philip(p),

      IMHO sind da einige Sachen drin, von denen ich glaube, dass du das _so_ nicht willst.

      Ich fürchte das ist zum Teil auf meinem Mist gewachsen,
      [pref:t=49606&m=271173], da aber Philipp einen neuen Thread angefangen hat, war das vielleicht nicht mehr ersichtlich.

      Ich denke folgendes wäre besser:
      $file = fopen("messages.txt","w+");

      Muß das nicht
      $file = fopen("messages.txt","r");
      heißen?

      Gruß Susanne

      1. Hallo Philip(p),

        IMHO sind da einige Sachen drin, von denen ich glaube, dass du das _so_ nicht willst.

        Ich fürchte das ist zum Teil auf meinem Mist gewachsen,
        [pref:t=49606&m=271173]

        Was du da geschrieben hast hat ja gestimmt.

        Ich denke folgendes wäre besser:
        $file = fopen("messages.txt","w+");
        Muß das nicht
        $file = fopen("messages.txt","r");
        heißen?

        stimmt. hab ich vergessen zu ersetzen...

        Gruß Susanne

        mfg,
        Philip

        --
        :::::::: http://www.metrox.de ::::::::
  3. hi,

    //Datei mit altem Inhalt öffnen (w+)
    $messages = fopen("messages.txt","w+");

    das öffnet also erstmal die datei, so weit so gut.
    das der modus falsch ist, wurde dir ja bereits mitgeteilt.
    $messages ist jetzt also eine art zeiger auf die geöffnete datei, also eine von php so genannte "resource id". da du diesen zeiger nachher in die datei schreiben willst, dies aber logisch gesehen unsinnig ist, schreibt php stattdessen den text "resource id #xy".

    fread($messages,filesize("messages.txt"));

    hier versuchst du also zu lesen, was in der datei bereits drinsteht. wegen dem falschen öffnungs-modus klappt dies wohl nicht.
    aber selbst wenn es klappen würde: was nützt es dir etwas zu lesen, wenn du es dir dann nicht merkst?
    wie wäre es in etwa mit
    $inhalt = fread($messages,filesize("messages.txt"));
    ?

    gruss,
    wahsaga