PHP while() Problem

Diskutiere das Thema PHP while() Problem im Forum Web-Programmierung

  1. Mac_Neuling

    Mac_Neuling Thread Starter Mitglied

    Beiträge:
    1.486
    Zustimmungen:
    1
    Mitglied seit:
    13.12.2004
    Hallo,

    ich habe da ein kleines Problem mit while() (in PHP).
    Ich möchte mit einer while-Schleife eine if-Bedingung solange überprüfen lassen, bis sie wahr ist und dann eine Datei erstellen. Doch leider bekomme ich dann tausende von Dateien in den Ordner geschrieben.

    PHP:
    $issave=0;
    $dateiname=1;
    while(
    $issave == '0')
    {
        
    $file=$dateiname.".txt";                                
        
    $savehandler=fopen("$file","w+");    
        if (!
    $savehandler)
        {
            @
    fwrite($savehandler$datensatz);
            
    $issave++;
        }    
        
    $dateiname++;    
    }
    Weiß vielleicht jemand, wo da mein Denkfehler ist?
     
  2. oneOeight

    oneOeight Mitglied

    Beiträge:
    50.696
    Zustimmungen:
    4.786
    Mitglied seit:
    23.11.2004
    da wäre eine do while schleife angebrachter...
    oder if then break
     
  3. MS_92

    MS_92 Mitglied

    Beiträge:
    84
    Zustimmungen:
    4
    Mitglied seit:
    07.03.2007
    versuch doch einfach mal nicht $issave++; sondern $issave = true; und dann vorher eben auf false und dann while(!$issave)...
     
  4. Mac_Neuling

    Mac_Neuling Thread Starter Mitglied

    Beiträge:
    1.486
    Zustimmungen:
    1
    Mitglied seit:
    13.12.2004
    @oneOeight: Mit einer do-while-Schleife hab ich es auch schon probiert. Es führt zum selben Ergebnis. eine if-then-break-Anweisung funktioniert auch nicht, da man eine unbestimmte Anzahl von Dateien überprüfen können muss.

    @MS_92: Da kommt leider auch das selbe bei raus.

    :(
     
  5. oneOeight

    oneOeight Mitglied

    Beiträge:
    50.696
    Zustimmungen:
    4.786
    Mitglied seit:
    23.11.2004
    wieso sollte das mit break nicht gehen?
    wenn ich deinen code richtig lese, dann müsstest du einfach das $issave++ durch break ersetzen...
    ist zwar kein sauberes programmieren, aber das möchtest du ja eh nicht ;)
     
  6. Mac_Neuling

    Mac_Neuling Thread Starter Mitglied

    Beiträge:
    1.486
    Zustimmungen:
    1
    Mitglied seit:
    13.12.2004
    hmm, wenn ich anstatt dem $issave++ ein break setzte, dann wird doch nur if abgebrochen und die while-Schleife läuft weiter.
     
  7. scope

    scope Mitglied

    Beiträge:
    4.105
    Zustimmungen:
    301
    Mitglied seit:
    24.01.2005
    Versuch mal "break 2;".
     
  8. Pingu

    Pingu Mitglied

    Beiträge:
    4.953
    Zustimmungen:
    341
    Mitglied seit:
    04.08.2003
    Lies Dir doch einfach mal durch was Du geschrieben hast:
    1. setze gespeichert auf 0
    2. setze dateiname auf 1
    3. wenn nicht gespeichert (ist der Falls, dann tue folgendes
    4. setze datei auf dateiname mit Endung ".txt" also auf 1.txt
    5. öffne Datei schreibend (Datei wird erzeugt so sie nicht exisiert)
    6. wenn obiges nicht funktioniert hat, dann tue folgendes
    7. obiges hat aber funktioniert, also überspringen wir es einfach und ehöhen dateiname um 1, also auf 2
    8. Ende der Schleife, also fangen wir von vorne an
    9. wenn nicht gespeichert ist, dann tue folgendes; also wir tun folgendes
    10. setze datei auf dateiname mit Endung ".txt" also auf 2.txt
    11. öffne Datei schreibend (Datei wird erzeugt so sie nicht exisiert)
    12. wenn obiges nicht funktioniert hat, dann tue folgendes
    13. obiges hat aber funktioniert, also überspringen wir es einfach und ehöhen dateiname um 2, also auf 3
    14. Ende der Schleife, also fangen wir von vorne an

    Wie man sieht, macht das Programm genau das was Du beschreibst. Ich würde einfach mal sagen, Deine Bedingung ist falsch.
     
  9. Mac_Neuling

    Mac_Neuling Thread Starter Mitglied

    Beiträge:
    1.486
    Zustimmungen:
    1
    Mitglied seit:
    13.12.2004
    Danke Pingu. Es lag am "!" (ungleich) in der Bedingung. So ein misst aber auch. :D
     
  10. master_p

    master_p Mitglied

    Beiträge:
    1.070
    Zustimmungen:
    23
    Mitglied seit:
    31.01.2005
    Zumal es ziemlich merkwürdig ist PHP eine Cast-Operation aufzuzwingen, wenn diese völlig überflüssig ist. Denn warum $issave auf 0 setzen und dann auf '0' abfragen!? Vor allem, wenn die Variable in der Funktion mit ++ aufgerufen wird.
     
Die Seite wird geladen...
  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Akzeptieren Weitere Informationen...