Kanula: do...while-Anweisung

Hallo,
ich hab ein kleines Problem und komm einfach nicht drauf!
Ich will jpg-Dateien (z.B. Bild2.jpg) zählen (mit do...while) und damit ich weiss, dass das Zählen auch erfolgreich war, geb ich den index-wert mit print aus. Brauche keinen anderen Lösungsweg, da ich das Script noch benötige, nur den Fehler!

<?php
$picture = "Bild";
$ext = ".jpg";
$fileName = sprintf("%s%d%s", $picture, $index, $ext );
do {
print "$index";
$index++;
} while(!*file_exists($fileName))
?>

*bin mir nicht sicher, ob das ! richtig ist oder sonst noch Fehler im Script zu finden sind.

Danke für eure Hilfe im Voraus!

MfG

  1. Hallo Kanula,

    ich hab ein kleines Problem

    und das wäre?

    $picture = "Bild";
    $ext = ".jpg";
    $fileName = sprintf("%s%d%s", $picture, $index, $ext );

    würde nicht
    $fileName = $picture.$index.$ext;
    das gleiche machen?

    do {
    print "$index";
    $index++;
    } while(!*file_exists($fileName))

    $fileName ändert sich in deiner Schleife nicht - du musst es schon mit in die Schleife rein stellen...

    *bin mir nicht sicher, ob das ! richtig ist oder sonst noch Fehler im Script zu finden sind.

    do...while bricht ab, wenn der Ausdruck false ist. file_exists gibt bei einer existierenden Datei true zurück (Schleife wird nicht abgebrochen) wenn die Datei nicht existiert gibt file_exists false zurück bricht damit die Schleife ab. Da du aber ein ! vor file_exists gemacht hast, wird das ganze negiert, und die Schleife bricht ab wenn die Datei existiert und läuft weiter, wenn sie nicht existiert - was genau das ist, was du nicht haben willst - also lass das ! weg. (ich hoffe, ich habe jetzt keinen Denkfehler gemacht :-))

    Grüße aus Nürnberg
    Tobias

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
    1. Hi Tobias,
      hab ich im script (nur im Thread!) noch vergessen: $index = 0;
      Das funktioniert schon:

      $index = 0;
      $picture = "Bild";
      $ext = ".jpg";
      $fileName = sprintf("%s%d%s", $picture, $index, $ext );
      $test = file_exists($fileName);
      print "$test<br>"

      ausgabe:
      Bild0.jpg
      1

      Ich habs auch ohne ! probiert, nur entweder kommt 0 raus oder er hört nicht mehr auf zu zählen!
      Bin auch erst anfänger in php, muss ich dazu sagen!
      Irgendwo muss doch ein Fehler sein...

  2. Moin!

    Ich will jpg-Dateien (z.B. Bild2.jpg) zählen (mit do...while) und damit ich weiss, dass das Zählen auch erfolgreich war, geb ich den index-wert mit print aus. Brauche keinen anderen Lösungsweg, da ich das Script noch benötige, nur den Fehler!

    Kannst du mit eigenen Worten mal wiedergeben, was das Programm genau machen soll? Zählen ist ja schön und gut, aber was soll beispielsweise file_exists() da drin? Muß ja einen Sinn haben, oder?

    Wenn du deine Aufgabenstellung in Worte gefaßt hast, wird dir nämlich einiges klarer. Bis dahin vergiß einfach kurz deinen Code, darauf kommen wir später zurück.

    - Sven Rautenberg

    --
    SELFTREFFEN 2003 - http://selftreffen.kuemmi.ch/
    ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|
    1. Hi Sven,
      Ich will mit file_exists prüfen ob eine Datei (Bild0.jpg) vorhanden ist. Ist sie das, soll der index-wert um 1 hochgezählt werden und die Datei Bild1.jpg soll geprüft werden. Das ganze so lange, bis es beispielsweise Bild7.jpg nicht mehr gibt. Der Index-Wert soll dann das Maximum von Zufallszahlen sein...
      MfG

      1. Moin!

        Ich will mit file_exists prüfen ob eine Datei (Bild0.jpg) vorhanden ist. Ist sie das, soll der index-wert um 1 hochgezählt werden und die Datei Bild1.jpg soll geprüft werden. Das ganze so lange, bis es beispielsweise Bild7.jpg nicht mehr gibt. Der Index-Wert soll dann das Maximum von Zufallszahlen sein...

        Aha.

        Dann ist die do-while-Schleife ohnehin die falsche Wahl, wie ich finde.

        Wenn ich den Algorithmus mal in sprachlicher Formulierung entwickle:

        1. Initialisieren: Zähler auf 0 setzen
        2. Solange "dateiname+zähler" existiert, Zähler um 1 erhöhen und neu prüfen.

        Oder in Code:

        <?php
        $picture = "Bild";
        $ext = ".jpg";
        $index = 0;
        while (file_exists($picture.$index.$ext))
        {
          $index++;
        }
        echo "Erste nichtgefundene Datei: ".$index;
        ?>

        - Sven Rautenberg

        --
        SELFTREFFEN 2003 - http://selftreffen.kuemmi.ch/
        ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|
        1. Vielen Dank!
          Jo, mit deinem Script gehts.
          MfG