Fehler im Programm?!
Philipp
- php
0 David Tibbe0 Philipp
0 Philip0 Susanne Jäger0 Philip
0 wahsaga
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
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
Gibst du $Einträge später aus?
Hi!
Ich gebe auf einer anderen Seite die Datei messages.txt aus!
Philipp
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
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...
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
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
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