Hallo,
In der Spalte "event" steht der Titel.
an datum event
------------- ------------- ------------------
1204 2007-04-30 Urlaub
815 2007-05-02 Urlaub
1 2007-05-02 UrlaubDa Du ein DBMS benutzt, benötigst Du für die Abfrage keine Schleife in der API-Funktion (also in PHP). Die "Schleife" ist nämlich in der Datenbank schon eingetragen.
Du beschaffst Dir ein Array mit den relevanten Daten.
In einer extra-Spalte könntest Du z.B. direkt den Farbwert für die Anzeige vorbereiten lassenselect an, datum, event, if(event='Urlaub','#00FF00','#FFFFFF') as farbe
from kalender -- habe vergessen, wie die Tabelle heißt
where (an = $an) and (datum between '2007-04-01' and '2007-04-30');Das gesamte Resultset übernummst Du in ein Array. Das ist bei 28-31 Tagen ja nichts Schlimmes
Dieses Array übergibst Du dann an deine Kalender-Darstellungsfunktion, die den HTML-String für die Ausgabe fertig macht. In diesen String kannst Du fas Feld
farbe
direkt übernehmen und musst nicht in PHP noch rumhampeln.
Das ist ja schon ein guter Ansatz, aber die Farbe wird in einer Wenn-Dann-Anweisung festgelegt, d. h. if ($dm=Urlaub and $an=1), dann {
$da = "<div style='font-weight:900; color:".$holiday_color.";'>".$d." </div>";} .
$dm = Tag und Monat der in der Spalte datum steht
$d ist übrigens die Zahl des Tages, also z. B. 29.
Wenn ich das nicht so mache, klappt die ganze Abfrage nicht.
Der Kalender wird durch eine Schleife erstellt.
Dabei wird die Schleife mit $d bis zum Ende des Monats je einmal durchlaufen.
In der Schleife wird zuerst abgefragt, ob es ein Wochenende ist.
Wenn ja wird eine Farbe festgelegt, wenn nicht kommt meine Urlaubsabfrage, wenn diese dann aber auch nicht zutrifft, wird die Farbe des normalen Tages gezeigt.
gruß aus Hosena