Wieo hat diese while schleife einen Laufzeitfehler?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Wieo hat diese while schleife einen Laufzeitfehler?

    hallo,
    könnt ihr mir sagen wieso diese schleife erst funktioniert und bei dem zweitem aufrufen den skriptes aufeinmal ein laufzeitfehler hat???

    PHP-Code:
                                   $dateiname 10000;
            while(
    file_exists($datei)){
                 
    $dateinameNeu $dateiname 1
                 
    $datei"$dateinameNeu.txt";         
            }
    //while 
    Bei jedem aufruf wird der dateiname um 1 hochgezählt. die datei heisst z.b. 10004.txt...

  • #2
    Du prüfst, ob $datei existiert, arbeitest dann aber mit $dateiname.

    Kommentar


    • #3
      $datei existiert bereits und es wird ja auch erst eine weitere datei angelegt, aber bei der dritten funktioniert es eben nicht mehr .. hier der gesammt quellcode..

      PHP-Code:

      <?php 

      if(isset($_POST['submit'])){ 
                                  
          
      $dateiname 10000;
          
      $datei "$dateiname.txt";    
             
             if(!
      file_exists($datei)){ 
             
                      
      $fhandle fopen($datei"a+"); 
                      
              
      //variablen festlegen
              
      $rechnungNummer $dateiname;         
              
      $name $_POST["name"];

              
              
      //in Datei schreiben  
              
      fwrite($fhandle$rechnungNummer ."\n\r");        
              
      fwrite($fhandle$name ."\n\r");
                  
              
              
      fclose($fhandle);
          }
      //if   
          
      else{ 
                          
              while(
      file_exists($datei)){
                   
      $dateinameNeu $dateiname 1
                   
      $datei "$dateinameNeu.txt";             
                       
              }
      //while
              
              
      $fhandle fopen($dateiNeu"a+");
              
              
      $rechnungNummer $dateinameNeu;         
              
      $name $_POST["name"];
              


              
      //in Datei schreiben  
              
      fwrite($fhandle$rechnungNummer ."\n\r"); 
                      
              
      fwrite($fhandle$name ."\n\r");

              
              
              
      fclose($fhandle);
              }
      //else
      }//if


      ?>

      Kommentar


      • #4
        Lass dir $dateinameNeu in der Schleife mal ausgeben. Es wird unegfähr so aussehen:

        1001
        1001
        1001
        usw.

        Du willst aber eigentlich das hier:

        1001
        1002
        1003
        usw.

        Alles klar?

        Kommentar


        • #5
          der ansatz ist falsch. besser wäre:
          Code:
          existierende_dateien = hole_liste_aus_ordner(ordner_für_rechnungen);
          sortiere( existierende_dateien, nach namen ); 
          letzte_datei_nummer = existierende_dateien[n];
          neue_datei_nummer = letzte_datei_nummer + 1;
          
          schreibe_neue_rechnung_in_datei( neue_datei_nummer + ".txt" )

          Kommentar


          • #6
            was mich ja so verwundert ist, das es ja vorher ohne probleme funktionert hat wie ich es wollte.. jetzt aber eben nicht mehr .. und in dem code sehe ich keinen logischen fehler.. oder übersehe ich etwas???

            Kommentar


            • #7
              du übersiehst einen logischen fehler. und www.dasdass.de übersiehst du ebenfalls.

              Kommentar


              • #8
                Ein Tipp zur Lösung wurde dir schon gegeben, scheinst du ja aber wohl zu ignorieren.
                Um einer riesen Diskussion vorzubeugen, da:
                PHP-Code:
                while(file_exists($datei)){
                     
                $dateinameNeu $dateiname++; 
                     
                $datei "$dateinameNeu.txt";             

                Kommentar


                • #9
                  dan zeig mir mal bitte den fehler! und ob das das jetzt wie das dass oder das das aussieht ist mir relativ egal

                  Kommentar


                  • #10
                    jetzt funktionierts!!

                    aber wo ist den der unterschied zwischen:

                    $dateinameNeu = $dateiname++;

                    und

                    $dateinameNeu = $dateiname + 1;

                    ??????????

                    Kommentar


                    • #11
                      Bei $dateinameNeu = $dateiname++; wird der linken Seite der Zuweisung der Wert der rechten Seite zugewiesen und danach wird $dateiname um eins erhöht.
                      Bei $dateinameNeu = $dateiname + 1; wird der linken Seite auch der Wert der rechten zugewiesen, aber $dateiname bleibt unverändert.
                      Das heißt, in deiner Schleife hatte $dateiname die ganze Zeit den selben Wert, und zwar 1001.

                      Lerne die Grundlagen, mache Testausgaben und repariere deine Tastatur - die scheint zu klemmen.

                      Kommentar


                      • #12
                        *sorry, doppelt gepostet*

                        Kommentar


                        • #13
                          Wobei die Zuweisung ($dateinameNeu = $dateiname++;) in diesem Fall natürlich völlig Sinnlos ist ...
                          Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                          Kommentar

                          Lädt...
                          X