Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] while wird nie erfüllt?

Einklappen

Neue Werbung 2019

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

  • SteiniKeule
    hat ein Thema erstellt [Erledigt] while wird nie erfüllt?.

    [Erledigt] while wird nie erfüllt?

    Hallo

    ich habe hier ein paar Zeilen, mit denen ich irgendwie nicht mehr weiter komme.
    Ich möchte so lange, bis der aktuelle Monat und das aktuelle Jahr erreicht ist, jeden Monat eine Zeile ausgeben.
    Jedoch nimmt die Schleife kein Ende mehr. Ich hoffe ihr könnt mir weiter helfen

    danke

    PHP-Code:
    $start "845157129";
    echo 
    "<table>";
    $monat date("n",$start);
    $jahr date("Y",$start);
    while(
    date("n",$start) != date("n") AND date("Y",$start) != date("Y") )
    {
        if(
    $monat == 13)
        {
            
    $monat "1";
            
    $jahr++;
        }
        
            echo 
    '<tr><td>'.date("M / Y",mktime(000$monat1$jahr)).'</td><td>';
        
                if(
    file_exists('daten/mr/'.$monat.'-'.$jahr.'.pdf'))
                {
                    echo 
    "Show";
                }
                else
                {
                    echo 
    "N/a";
                }
        
            echo 
    '</td><td>Erstellen</td></tr>';
        
        
    $monat++;
    }
    echo 
    "</table>"

  • Arne Drews
    antwortet
    Obwohl man spätestens mit Hilfe von Post #12 drauf kommen sollte
    (einfach die rechte Spalte von oben nach unten lesen!), hier noch ein offizieller Doku-Link:
    PHP-Doku -> Logische Operatoren

    Einen Kommentar schreiben:


  • gurisingh
    antwortet
    Schau dir mal den Operator an, den du in der while schleife benutzt:

    while($monat != date("n") AND $jahr != date("Y") )

    Bei deinem Resultat siehst du, dass er in April abbricht(wei Mai ja 5. ist).
    Das heisst, er bricht ab weil er den 5. Monat wieder erreicht hat und ignoriert das Jahr in dem Fall.

    Jetzt musst du halt versuchen herauszufinden warum er das Jahr in der while schleife ingoriert(Logik korrekt, operator korrekt etc.).

    Einen Kommentar schreiben:


  • Asipak
    antwortet
    Lass dir doch mal nach der Schleife die Werte ausgeben, die du in der Bedingung überprüfst. Dann wirst du ja sehen, ob er Rücksicht auf das Jahr nimmt oder nicht.

    PHP lügt in diesem Fall jedenfalls nicht. Das Problem ist die Logik und dafür musst du selbst ein Gefühl kriegen und ein Verständnis entwickeln. Auch notwendiges Debugging können wir dir nicht abnehmen.

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    Boah, ich gebs auf. Ich werde Dir jetzt nicht das 1×1 erklären. Logik, Verneinung - solltest Du Dir mal reinziehen.

    Einen Kommentar schreiben:


  • SteiniKeule
    antwortet
    Na das hab ich doch geschrieben

    Solange(Jahr->zähler nicht Jahr->Aktuell und Monat->Zähler nicht Monat->aktuell ist)
    {
    Ausagbe von Monat-Zäher / Jahr-Zähler
    }

    und jetzt bricht er mir ab, sobald Monat-Zäher ist gleich Monat-Aktuell. Ohne rücksicht auf Jahr.

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    So schwer ist das nun wirklich nicht! Warum wollt Ihr nur alle Programmierer sein?
    Code:
    while - solange
    (jahr - jahr
    !=    - ungleich 
    2008  - 2008
    &&    - und 
    monat - monat
    !=    - undgleich
    März  - März
    ) {}
    Solange es nicht regnet und es nicht schneit, scheint die Sonne.

    Einen Kommentar schreiben:


  • Asipak
    antwortet
    Nein.

    Einen Kommentar schreiben:


  • SteiniKeule
    antwortet
    so lange bis die 2 bedingungen erfüllt sind

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    Wann wird denn while, also die Schleife ausgeführt? Und wann nicht?

    Einen Kommentar schreiben:


  • SteiniKeule
    antwortet
    Zitat von nikosch Beitrag anzeigen
    Bitte mal über die Logik nachdenken! Und Pushings nächstesmal sein lassen.
    Ja ich kann keinen Fehler sehen.

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    while (jahr != 2008 && monat != März) {}
    Bitte mal über die Logik nachdenken! Und Pushings nächstesmal sein lassen.

    Einen Kommentar schreiben:


  • SteiniKeule
    antwortet
    keiner ne idee?

    Einen Kommentar schreiben:


  • SteiniKeule
    antwortet
    Zitat von Flor1an Beitrag anzeigen
    Tja manchmal muss man auch die Variable erhöhen
    Ich denke, du würdest mir nicht glauben, wie lange ich da rum versucht habe, bevor ich den Beitrag hier geschrieben habe. Ich habs einfach nicht gesehen. Erst als ich hier die ganze logik nochmal genauerstens zerlegt habe und alles schritt für schritt durchgegangen bin, hat es mich angesprungen und vom Stuhl geworfen peinlich so ein beitrag

    Einen Kommentar schreiben:


  • SteiniKeule
    antwortet
    ok. hab die While jetzt geändert. Aber jetzt bricht er mir beim ersten übereinstimmen von monat ab.

    PHP-Code:
    while(date("n",mktime(0,0,0,$monat1,$jahr)) != date("n") AND date("Y",mktime(0,0,0,$monat1,$jahr)) != date("Y") ) 
    Code:
    Oct / 1996 N/a Erstellen
    Nov / 1996 N/a Erstellen
    Dec / 1996 N/a Erstellen 
    Jan / 1997 N/a Erstellen 
    Feb / 1997 N/a Erstellen 
    Mar / 1997 N/a Erstellen 
    Apr / 1997 N/a Erstellen

    Einen Kommentar schreiben:

Lädt...
X