Zum Inhalt springen

Kalenderaufgabe in PHP (Brauche Hilfe)


Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 ^^

Link zu diesem Kommentar
Auf anderen Seiten teilen

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:

kalenderh.jpg


<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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 von _n4p_
Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...