Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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.

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben (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 von _n4p_
Geschrieben

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.

Geschrieben

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.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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