Diabetiker Geschrieben 3. März 2010 Geschrieben 3. März 2010 Hallo zusammen ich brauche mal hilfe bei einer Hausaufgabe. Die Aufgabe: Stellen Sie auf einer Webseite die Monatsüberischt des aktuellen Kalendermonats dar. Die Spalten enthalten die Wochentage (Montag bis Sonntag) und die Zeilen die Wochen im Monat. Heben Sie das aktuelle Datum optisch hervor. Die Tage des vorhergehenden bzw. nachfolgenden Monats sollen ebenfalls optisch abgegrenzt werden. Ich habe keine Idee wie ich anfangen soll bzw. wie ich das umsetzen kann. Bis jetzt habe ich nur einen kleinen Teil aber keine idee ob das überhaupt nutzbar ist. Ich kann raussuchen wie viele Tage der Monat hat und welcher Wochentag ist und eine for-Schleife zählt die tage hoch bis zum Monatsende. <?php $monat = date("m",$timestamp); $wochentag = date("w",$timestamp); switch($monat) { case ("01"): $monat = 31; break; case ("02"): $monat = 28; break; case ("03"): $monat = 31; break; case ("04"): $monat = 30; break; case ("05"): $monat = 31; break; case ("06"): $monat = 30; break; case ("07"): $monat = 31; break; case ("08"): $monat = 31; break; case ("09"): $monat = 30; break; case ("10"): $monat = 31; break; case ("11"): $monat = 30; break; case ("12"): $monat = 31; break; } for($count = 1; $count < $monat + 1; $count++) { echo $count; } ?> [/PHP] Habt ihr eine Idee wie ich an die ganze Sache ran gehen muss bzw. wie ich vorgehen muss damit das alles so klappt wie es soll? Danke David Zitieren
pascal87 Geschrieben 3. März 2010 Geschrieben 3. März 2010 Nach 2 Sekunden google habe ich schonmal das gefunden. Kümmer dich mal darum, dass du beliebige Monate mit ihren Tagen ausgeben kannst, als einfache Liste, um den Darstellungskram kannst du dich später kümmern. Zitieren
_n4p_ Geschrieben 4. März 2010 Geschrieben 4. März 2010 mit dem switch-case konstrukt versuchst du ja die anzahl der tage eines monats zu bestimmen: hier besser date('t',$time); benutzen. wochentag is schonmal nich schlecht, brauchst du aber in der schleife. weiterhin um nen anständigen kalender zu bekommen, brauchst du "leere tage" zum auffüllen, hier auch wieder mit date('w') arbeiten, aber vorher den ersten und letzten tag im monat bestimmen. dafür kannst du mktime benutzen. die fülltage lassen sich anhand von date('w') dann einfach berechnen, man muss nur beachten das sonntag 0 is, der einfachheit halber einfach die 0 abfangen und stattdessen mit 7 rechnen. danach läufts in der schleife einfach über die ersten fülltage, den monat selbst und dann die hinteren fülltage. bei sonntag die zeile abschließen bei montag ne neue beginnen. und noch den aktuellen tag markieren. fertig ^^ Zitieren
Diabetiker Geschrieben 5. März 2010 Autor Geschrieben 5. März 2010 Also ich habs schonmal geschaft das ich die Tage des Monats angezeigt bekomme aber jetzt muss das ja auch noch geordnet werden(Am besten in einer Tabelle).Sollte am besten so aussehen: <style type="text/css"> #zelle { border:solid 1px #000000; background-color:#FFFFFF; text-align:center; width:20px; height=20px; } #zelleheute { border:solid 1px #000000; border-style:dashed; text-align:center; color:#ff0000; font-weight:bold; background-color:#00DF00; width:20px; height=20px; } </style> <?php $monat = date("m",$timestamp);//Welcher Monat $monatstage = date('t');//Wieviele tag der Monat hat $monatstag = date('j');//Aktueller tag des Monats $wochentag = date("w",$timestamp);//von 0-6 $kalenderwoche = date('W');//Aktuelle Kalenderwoche for($i = 1; $i <= $monatstage ; $i++)//1Angabe=Startwert,2Angabe=wie oft wird die Shleife wiederholt,3Angabe=Um wieviel wächst die Schleife { if ($i == $monatstag) { echo '<div id=zelleheute>'; echo $i.'<br>';//Ausgabe ddes Monatstages wenn es der heutige tag ist echo '</div>'; } else { echo '<div id=zelle>'; echo $i.'<br>';//Ausgabe der Monatstage echo '</div>'; } } ?> [/PHP] So was ist der nächste schritt den ich zu tuhen habe und wie? Danke David Zitieren
lit-web Geschrieben 6. März 2010 Geschrieben 6. März 2010 Hallo, ich würde an deiner Stelle bei einem Kalender auf Timestamps zurückgreifen und alles davon ausgehend machen, da bist im endeffekt viel flexibler weil du da alles vom Timestamp aus errechnen kannst. Das macht dann Vorteile wenn das erweitern willst das du Wochentage zur aktuellen Woche ausgeben willst und so weiter. Also mein Tipp viel Übungen machen mit Timestamps und dann wirst du schnell sehen wie viele Vorteile du daraus hast. Mfg lit-web Zitieren
_n4p_ Geschrieben 7. März 2010 Geschrieben 7. März 2010 (bearbeitet) also zunächst mal möchte ich dir eine nützliche funktion empfehlen: list(), list packt die werte eines arrays in variablen: list($monat, $monatstage, $monatstag, $wochentag. $kalenderwoche) = explode('.',date('m.t.j.w.W',$timestamp)); dann fehlt dir immer noch die berechnung der fülltage eine neue zeile beginnt am montag (wochentag = 1) und endet am sonntag (wochentag = 0) die schleife kann auch mit einem negativen startwert beginnen zb -2, ließ mal die mktime dokumentation, mktime korrigiert nämlich falsche angaben 32.12.2009 => 1.1.2010. damit kommt man dann ziemlich einfach an die tage vor dem ersten des jeweiligen monats Bearbeitet 7. März 2010 von _n4p_ Zitieren
lit-web Geschrieben 7. März 2010 Geschrieben 7. März 2010 Also hier mit list zu arbeiten ist vollkommen unnötig, eben weil man den Timestamp hat und aus dem kannst du alles was du irgendwie brauchst berechnen. Zitieren
_n4p_ Geschrieben 7. März 2010 Geschrieben 7. März 2010 der timestamp wird doch genutzt o.0 und warum auf date() verzichten und das ganze "per hand" berechnen? list spart hier lediglich mehrere date() aufrufe. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.