Vinzenz Mai: while Schleife in if Abfrage

Beitrag lesen

Hallo Sabine

Wenn ich so wie DU vorschlägst mache, bekomme ich doch nur die Termine eines Tages ausgegeben, oder?

Bitte schrei' mich doch nicht an (Schreiben in Großbuchstaben ist verdammt laut), es klingelt in meinen Augen.

Ich hatte Dein Posting bisher immer nur unter dem SQL-Aspekt betrachtet und den Rest vernachlässigt, ein klarer Fehler meinerseits :-(

Hier noch mal Deine switch-Anweisung, die nicht das tut, was Du von ihr erwartest, sondern das, was Du ihr sagst.

switch($heumonat){

case 1: case 3: case 5: case 7 : case 8 : case 10:
     if($heutag > 32)
    {
      $heutag   = $heutag + $i - 31;
      $heumonat = $heumonat+1;
    }
    break;

case 2 :case 4 : case 6 : case 9 : case 11 :
       if($heutag > 31)
    {
      $heutag   = $heutag + $i - 30;
      $heumonat = $heumonat + 1;
    }
    break;

case 12 :
     if($heutag > 32)
    {
      $heutag   = $heutag + $i - 31;
      $heumonat = 1;
      $heujahr = $heujahr+1;
    }
    break;

default:
      $heutag    =$heutag+$i;

Hier steckt Dein Denkfehler. Du gehst davon aus, dass der default-Zweig für jeden Fall abgearbeitet wird, bei dem der Ausdruck in der if-Anweisung false ergibt. Dies ist nicht der Fall.

Der default-Zweig wird nur für die Werte von $heumonat abgearbeitet, die durch die case-Zweige nicht abgedeckt sind. Die case-Zweige decken aber alle denkbaren Monate ab, d.h. der default-Zweig wird nie abgearbeitet. Das was bei Dir unter default steht, gehört in jeden else-Zweig bei jedem case. (Verständlich?)

};

Weiterhin bezweifle ich, dass Du den Februar korrekt behandelst. Soweit ich mich erinnere (es ist ja so lange her), hatte der Februar dieses Jahr 28 Tage. Es soll auch Jahre mit einem 29. Februar geben ;-)

Übrigens könnten Dir die Kalenderfunktionen von PHP weiterhelfen. Schau bitte mal unter http://www.php.net/manual/de/function.cal-days-in-month.php nach.

Freundliche Grüße

Vinzenz