Kieselnator: Problem mit Datei-Schreiben "img.txt"

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.

  1. 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!

    1. 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...

      1. 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!

      2. 'ǝɯɐ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

        --
        I like children. If they're properly cooked.
        - W.C. Fields
      3. leute problem gelöst:

        $new = $img++;

        mag er nicht, also mal

        $new = ++$img;

        oder

        $new = $img+1;

        1. yes, das funzt, dampf!

  2. 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

    --
    The most exciting phrase to hear in science, the one that heralds new discoveries, is not “Eureka!” but “That's funny...” [Isaac Asimov]