Problem mit Datei-Schreiben "img.txt"
Kieselnator
- php
0 dedlfix0 Kieselnator0 dedlfix0 Shadowcrow0 der neue
0 ChrisB
Dieser kleine Code hier...
<?php
//chmod("img.txt", 0777);
$file = "img.txt";
$data = fopen($file, "r");
$img = fread($data, filesize($file));
fclose($data);
echo "<img src=\"images/preview/".$img.".bmp\">";
$new = $img++;
if($new==37){
$new = 1;
}
$data = fopen($file, "w+");
fwrite($data, $new);
fclose($data);
?>
...soll verursachen, dass eine Nummer aus einer Datei gelesen wird, und um eins krementiert wird. das funktioniert soweit, aber dann wird die neue nummer nicht in die datei geschrieben. habe bereits mit chmod rumgebastelt, aber da tut sich gar nichts. weiß jemand das problem?
danke im voraus, kieselnator.
Hi!
Dieser kleine Code hier...
...soll verursachen, dass eine Nummer aus einer Datei gelesen wird, und um eins krementiert wird. das funktioniert soweit, aber dann wird die neue nummer nicht in die datei geschrieben. habe bereits mit chmod rumgebastelt, aber da tut sich gar nichts. weiß jemand das problem?
Dir scheinen weder file_get_contents() und file_put_contents() geläufig zu sein, noch dass Funktionen, wie du sie verwedet hast, Fehlerzustände durch entsprechende Rückgabewerte mitgeteilt werden, die man auswerten sollte, um robuste Progamme zu schreiben. Ansonsten ergeben sich keine Meldungen? AUch nciht, wenn du explizit das error_reporting auf E_ALL (und display_errors auf on) stellst?
Lo!
jetzt sieht es so aus:
<?php
error_reporting(E_All);
/*chmod("img.txt", 0777);
$file = "img.txt";
$data = fopen($file, "r");
$img = fread($data, filesize($file));
fclose($data);
$new = $img++;
if($new==37){
$new = 1;
}
$data = fopen($file, "w+");
fwrite($data, $new);
fclose($data);*/
$img = file_get_contents("img.txt");
echo "<img src=\"images/preview/".$img.".bmp\">";
$new = $img++;
file_put_contents("img.txt", $new);
?>
...und funzt immer noch nicht...
Hi!
error_reporting(E_All);
E_ALL nicht E_All.
...und funzt immer noch nicht...
Was heißt das konkret?
$img = file_get_contents("img.txt");
echo "<img src="images/preview/".$img.".bmp">";
$img enthält das gewünschte, weil das eine entsprechende Ausgabe erzeugt? (BMP ist aufgrund seiner Dateigröße kein besonders webgeeignetes Format.)
file_put_contents("img.txt", $new);
Und was ist der Rückgabewert der Funktion? Wenigstens zum Test solltest du den mal mit var_dump() ausgeben:
var_dump(file_put_contents("img.txt", $new));
Lo!
'ǝɯɐu$ ıɥ
probiere das mal:
<?php
$file = fopen ('img.txt', 'r+');
if (!is_resource ($file)) {die ('Konnte die Datei nicht öffnen!');} // jaja die(); ist keine gute fehlerbehandlung, zum testen aber praktisch
if (!flock ($file, LOCK_EX)) {die ('Sperren der Datei fehlgeschlagen!');}
$img = (int) fread ($file, filesize ('img.txt'));
echo "<img src=\"images/preview/".$img.".bmp\">";
$img++;
if($img==37){
$img = 1;
}
fseek ($fp, 0, SEEK_SET);
ftruncate ($fp, 0);
fwrite ($file, (string) $img);
fclose ($file);
?>
Die Datei muss aber existieren, erstmal 0 reinschreiben und gut ist.
ʍopɐɥs
leute problem gelöst:
$new = $img++;
mag er nicht, also mal
$new = ++$img;
oder
$new = $img+1;
yes, das funzt, dampf!
Hi,
Dieser kleine Code hier...
...soll verursachen, dass eine Nummer aus einer Datei gelesen wird, und um eins krementiert wird. das funktioniert soweit, aber dann wird die neue nummer nicht in die datei geschrieben.
Die neue Nummer ist einfach toter als tot, wenn du sie vorher kremiert(?) hast ...
MfG ChrisB