Peter: Kalederwoche

Hallo zusammen,
ich habe auf meiner Seite eine SelectBox wo die KalenderWochen drin stehen.

Sobal eine KW ausgewählt worden ist erscheint unten die jeweilige Woche.

z.b KW 1:

Januar
2 3 4 5 6 7 8

Das ganze mache ich mit folgendem Code:
$kw = $_REQUEST['KalenderWoche'];
$jahr = 2006;
$tstp=mktime(0,0,0,1,$kw*7,$jahr);

$kw2=date(W,$tstp);

if ($kw2!=$kw) $tstp=mktime(0,0,0,1,--$kw*7,$jahr);

$wt=date(w,$tstp);

if (--$wt==-1) $wt=6;
setlocale(LC_TIME, 'German_Germany');
echo $montag = date("d",$tstp-$wt*86400); //Ausgabe von Datumstag
$Monat = strftime("%B",$tstp-$wt*86400); //Ausgabe von Monat
$dienstag = $montag + 1;
$mittwoch = $montag + 2;
$donnerstag = $montag + 3;
$freitag = $montag + 4;
$samstag = $montag + 5;
$sonntag = $montag + 6;

Dieser ermittelt mir immer das Datum vom Montag der ausgewählten KW. Danach zähle ich die Woche einfach hoch.
Nun habe ich aber ein Problem, wenn der Monat mitten in der Woche ändet. Dann steht da nämlich

Januar:
30 31 32 33 34 35 36

Das kommt natürlich daher das ich die Woche einfach hochzälhle. Hat jemand eine sinnvollere Idee als meine???

Vielen Dank

  1. Hallo Peter,

    Du koenntest zB. mit date('t') herausfinden, wieviele Tage dein Monat hat und das Zaehlen entsprechend abbrechen.

    Gruß,

    Dieter

    1. ööömm date('t') ist erstmal ein guter Ansatz aber wie soll das abbrechen funktionieren??

      1. Hallo Peter,

        na, zB. koennten deine Tage anstatt in einzelnen Variablen in einem Array stehen ($woche['montag'] = '' usw.).

        Durch das Array gehst du in einer Schleife und ueberpruefst jedes Mal, bevor du addierst, ob das Ergebnis von date('t') nicht ueberschritten wurde.

        Gruß,

        Dieter

        1. Hallo Dieter
          die Idee ist total super.
          Leider habe ich es mit Array schon versucht es ist dann an meinem Können gescheitert. Könntest du mir evt zeigen wie das geht mit den
          Wochentagen in ein Array.....

          Denn ich muss zugeben die einzelnen Tage einfach hochzählen zu lasse ist nicht sehr Professionell.

          Wäre total nett von dir!!!!!

          1. Hallo Peter,

            $num_days = date('t');

            foreach ($woche as $day => $date)
            {
              if($date <= $num_days)
              {
                $date = $date + 1;
                $woche[$day] = $date;
              }
            }

            Es waere sicher kein Fehler, wenn du im PHP Manual mal ein bisshen zum Thema Schleifen nachlesen wuerdest.

            Gruß,

            Dieter

            1. Vielen Dank für deine Hilfe deinem Ratschlag werde ich nachgehen.

              Aber so ganz kapiere ich deinen Code noch nicht wo kommt denn da mein ermitteltes Datum ins Spiel? Also das Datum welches ich zuvor über meine Funktion mit der KalenderWoche ermittelt habe.
              Noch mal danke für deine Hilfe!!!!

              1. Hallo Peter,

                Sei mir nicht böse, aber ich habe den Eindruck, dass du deine Beispiele nur mit Copy & Paste zusammensetzt, ohne zu verstehen, was du tust.
                Die Schleife, die ich im letzten Beispiel gepostet habe, ersetzt natürlich nur den Teil ab $dienstag = $montag + 1; Und auch sonst musst du dein Beispiel entsprechend nachbearbeiten.

                Gruß,

                Dieter

                1. Nein ich bin dir nicht böse.
                  Aber ich verstehe nicht was in den Variablen $date und $woche drin steht?