fwrite() und fclose()?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
argument
ausdruck
ausgangsbedingung
beitrag
datei
daten
exit
fehler
gedacht
gleichheitszeichen
inhalt
mode
normalerweise
not
resource
speicher
taxi
variable
verzicht
zwischenspeicher
-
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <a href="index.php">zur?ck</a> <form method="post"> ?ffne Datei mit dem Namen:<br> <input type="text" name="datei_name">.txt<br> <input type="submit" name="?ffnen" value="Datei ?ffnen"><br> </form> </body> </html> <?php $datei=$datei_name; if($_POST['?ffnen']) { echo 'Die Datei: "'.$datei.'" enth?lt den inhalt:<br><br>'; $fp = fopen('txt/'.$datei.'.txt',"w"); if ($fp) { while(!feof($fp)) { $text = $text.fgets($fp); } fclose($fp); } echo $text; echo '<br><br><br>'; echo 'diesen Inhalt ersetzen Mit:<br>'; echo '<textarea name="inhalt" cols="15" rows="5"></textarea><br>'; echo '<form method="POST"><input type="submit" name="speichern" value="Speichern">'; } if($_POST['speichern']) { fwrite($fp,$inhalt); fclose($fp); } ?> </body> </html>
so hab ich mir das also gedacht.
Allerdings bekomm ich dabei fehlermeldungegn:
Warning: fwrite(): supplied argument is not a valid stream resource in C:\Programme\Xampp\xampp\htdocs\projekte\inhalt.php on line 39
Warning: fclose(): supplied argument is not a valid stream resource in C:\Programme\Xampp\xampp\htdocs\projekte\inhalt.php on line 40
die Zeilen k?nnt ihr euch ja denken.
Allerdings hab ichs bisher auch nicht anders gelesen.
doch bei mir kommt da ne Fehlermeldeung.
bitte um hilfe... -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
compactdisc schrieb:
Der Fehler liegt am Zugriffsmodus:
Der Modus 'w' kann Dateien nicht lesen!
oh...
jetzt hab ichs aber mal mit "r+" probiert, und es kommt immer noch die selbe Fehlermeldung.
-
schreib mal statt
$datei=$datei_name;
$datei="test";
und statt 'w' (Schreibmodus)
'a+' (Schreib-/Lesemodus mit Dateierstellung)
entweder wurde 'datei_name' nicht korrekt ?bermittelt (zB register_globals = off)
oder die Datei existiert gar nicht
(dann wird sie durch den Schreibmodus 'a+' erstellt)
MfG Asmodeus -
$datei_name wurde korrekt ?bermittelt.
Da ich ja den bisherigen Inhalt sehe.
doch erstellen will ich die datei ja nicht.
r+
gibt perfekt aus.
a oder a+ setzen den zeiger ja ans ende der datei. und das will ihc ja wieder nicht.
-
w+
Nein, war nur Spa?!^^
Du solltest deine Programmlogik trennen:
if( irgendwas == '?ffnen' ) $mode = 'r';
else $mode = 'w';
$fh = fopen($datei, $mode);
if($fh === FALSE) {
print('Verdammte Schei?e!');
exit();
}
// $blubb ist der Zwischenspeicher
// f?r die Daten
if($mode = ''r') {
$blubb = @fgets($fh);
}
else {
@fputs($fh, $blubb);
}
@fclose($fh);
Beitrag ge?ndert am 14.10.2005 19:22 von alopex -
alopex schrieb:
w+
Nein, war nur Spa?!^^
Du solltest deine Programmlogik trennen:
if( irgendwas == '?ffnen' ) $mode = 'r';
else $mode = 'w';
$fh = fopen($datei, $mode);
if($fh === FALSE) {
print('Verdammte Schei?e!');
exit();
}
// $blubb ist der Zwischenspeicher
// f?r die Daten
if($mode = ''r') {
$blubb = @fgets($fh);
}
else {
@fputs($fh, $blubb);
}
@fclose($fh);
Beitrag ge?ndert am 14.10.2005 19:22 von alopex
ok ok...
bissle viel auf einmal^^
den teil:
if( irgendwas == '?ffnen' ) $mode = 'r';
else $mode = 'w';
$fh = fopen($datei, $mode);
if($fh === FALSE) {
print('Verdammte Schei?e!');
exit();
}
kapier ich
nur "if( irgendwas == '?ffnen' )" irgendwas? '?ffnen'?
das mit "Verdammte schei?e" muss man ja kapiern xD
und dann noch:
if($fh === FALSE)
sind die === beabsichtigt, oder sollns nur 2 sein?
-
Die 3 Gleichheitszeichen sind beabsichtigt, so pr?ft man normalerweise, ob eine Variable oder ein Ausdruck einen booleschen Wert hat (TRUE oder FALSE). Das Teil hei?t Identit?tsoperator.
if( irgendwas == '?ffnen' ) $mode = 'r';
else $mode = 'w';
Hier bedeutet "irgendwas" deine Ausgangsbedingung. Ich habe das lediglich verk?rzt. Du kannst wie urspr?nglich in deinem Script schreiben:
if( $_POST['?ffnen'] ) $mode = 'r';
else $mode = 'w';
Obwohl ich isset() vorziehen w?rde:
if( isset( $_POST['?ffnen'] ) ) $mode = 'r';
else $mode = 'w';
Und schlie?lich w?rde ich auf deutsche Umlaute verzichten, man wei? nie, ob die auch beim Server so ankommen:
if( isset( $_POST['oeffnen'] ) ) $mode = 'r';
else $mode = 'w';
Das "Verdammte S...!" ist ein Zitat aus "Taxi" von Luc Besson:
http://www.imdb.com/title/tt0152930/
(Nur f?r den Fall, dass mir jemand F?kalsprache unterstellen w?llte ...^^)
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage