Kalender in PHP
Günther
- php
hallo zusammen,
ich habe vor einen PHP-Kalender zu schreiben.
Er sollte 7 Spalten für die Wochentage haben, wobei die erste Spalte "Montag" sein sollte.
So, das ist ja noch kein großes Problem.
Dann kommen die Tage:
Erstmal müssen am Anfang in der ersten Zeile soviele "leere" <td>s hinzugefügt werden bis der Wochentag des 1. im Monats erreicht ist.
Das denke ich krieg ich auch noch hin.
Aber wie bringe ich PHP dazu genau soviele zeilen/spalten zu schreiben dass z.b. der februar nicht 31 Tage bekommt?
Das ganze soll eine Art System wählen wo man ein Datum auswählen kann, d.h. ich könnte natürlich einfach einen Link mit z.b. dem Tag als Linktext in jede Spalte schreiben lassen, aber gibt es denn irgendeine möglichkeit >> OHNE JS << den ganzen hintergrund einer spalte als link zu machen?
also dass man quasi nur in die spalte klicken muss?
Mir ist da schon die idee gekommen ich könnte ja ein 1*1 pixel großes transparentes gif machen, das dann auf die größe der spalte strecken wäre ja kein problem. aber was machen wenn die spaltengröße keine absolute sondern eine relative größe ist?
Vielen Dank für die Zeit zum Lesen und die hoffentlich wie immer kompetente Hilfe :)
MfG,
Günther
Hallo,
hallo zusammen,
ich habe vor einen PHP-Kalender zu schreiben.
Wenn Du sowas in der Art wie
meinst, kann ich dir sicherlich etwas helfen. Details kann man mit den Ansichtsoptionen ein- und ausblenden.
Meld' dich dann einfach nochmal und konkretisiere deine Fragen.
Gruss
Frankie
Moin!
$intTageDesMonats=date("t",mktime(mktime(0,0,0,$intMonat,1,$intJahr))
vielen Dank fastix.
Stimmt, auf die Idee hätte ich auch kommen können beim manual der fkt date() mal nachzusehen. Dann wäre ich bestimmt auch darauf gestoßen dass "t" die Anzahl der Tage eines Monats zurückgibt. Also vielen Dank dafür, und auch für den CSS-Code :)
Zur Wahrung des SELF- Charakters ist da ein kleiner Fehler drin. Finde ihn!
also ganz spontan würde ich sagen da ist einmal "mktime(" zuviel drin.. naja und ein ; muss hinten noch hin ;)
kleine frage noch zu der mktime-Fkt: wieso braucht man beim 5. Wert, dem Tag eine 1?
Wenn Du sowas in der Art wie
..
meinst, kann ich dir sicherlich etwas helfen. Details kann man mit den Ansichtsoptionen ein- und ausblenden.
genau sowas. Die kleine Ansicht oben braucht's allerdings gar nicht, sondern nur eine große Ansicht, wo eben für den aktuellen Monat alle Tage mit den entsprechenden Links zu einem Formular angegeben sind. Und dann muss man mit einem Formular auch einen anderen Monat aussuchen können.
Aber ich glaube ich werde mich jetzt erst mal selbst versuchen, ich denke mit dem kleinen Denkanstoß von fastix sollte ich das hinkriegen.
Falls nicht werde ich mich nochmal melden.
Vielen Dank euch beiden :)
MfG,
Günther
Hallo Günther,
also ganz spontan würde ich sagen da ist einmal "mktime(" zuviel drin.. naja und ein ; muss hinten noch hin ;)
Ich denke, damit liegst Du gar nicht so falsch ;-)
kleine frage noch zu der mktime-Fkt: wieso braucht man beim 5. Wert, dem Tag eine 1?
Für eine Monatsansicht (welche z.B. mit mktime() generiert wird) hat der jeweils Monatserste (und auch Monatsletzte) eine besondere Bedeutung.
Wenn man also den (aktuellen) Monat ermitteln möchte setze ich (und andere vielleicht auch) den Tag auf 1.
Ein php-Handbuch sagt dazu auch:
int mktime ( [int Stunde [, int Minute [, int Sekunde [, int Monat [, int Tag [, int Jahr [, int is_dst]]]]]]])
... alle Tage mit den entsprechenden Links zu einem Formular angegeben sind. Und dann muss man mit einem Formular auch einen anderen Monat aussuchen können.
Ganau so mache ich es auch. Und wenn es bei mir in dem von mir genannten Beispiel keine Formulare sondern Berichte sind, bleibt das Prinzip gleich.
Alle Ansichten in meinem Beispiel benutzen das gleiche Script, lediglich die Darstellung ist verschieden.
Aber ich glaube ich werde mich jetzt erst mal selbst versuchen, ich denke mit dem kleinen Denkanstoß von fastix sollte ich das hinkriegen.
Auch ich bin mir sicher, daß Du das hinbekommst.
Falls nicht werde ich mich nochmal melden.
ok.
Grüsse
Frankie
Moin!
Moin!
kleine frage noch zu der mktime-Fkt: wieso braucht man beim 5. Wert, dem Tag eine 1?
Nur um sicher zu gehen, daß beim Eintrag einer Null die Funktion nicht in irgendeiner PHP-Version zu dem Schluß kommt, es handele sich um den letzten Tag des Vormonats...
Teste mal:
<? echo date("d.m.Y", mktime(0,0,0,2003,365,1); ?>
Noch Fragen?
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Moin!
$intTageDesMonats=date("t",mktime(mktime(0,0,0,$intMonat,1,$intJahr))
Zur Wahrung des SELF- Charakters ist da ein kleiner Fehler drin. Finde ihn!
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Moin!
aber gibt es denn irgendeine möglichkeit >> OHNE JS << den ganzen hintergrund einer spalte als link zu machen?
Ein Hintergrund ist nicht klickable.
also dass man quasi nur in die spalte klicken muss?
CSS hilft Dir. Mit table id="kalender" könnte das so aussehen.
kalender a {
display: block;
width: x px|%...;
height: y px|%...;
}
Beispiel?
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®