Tom: Resultset erzeugen

Beitrag lesen

Hello,

Du weißt, dass Du auch Spalten ausgeben lassen kannst im Resultset, die in der Tabelle gar nicht enthalten sind? Diese kannst Du berechnen lassen.

Wenn Du nun für jeden Tag einen Datensatz erzeugen lässt, dann füge doch einfach eine Spalte an, in der die Anzahl der Urlauber für diesen Tag gezählt werden. Das funktioniert mit einer Stored Procedure und zwei Uservariablen, die Du Dir bereitstellst. Eine für die Gruppe( den Tag), eine für die Anzahl der Urlauber an diesem Tag.

Wenn dann später Dein Darstellungstool auf einen Eintrag "urlauber = 2" läuft, weißt Du, dass der Tag anders dargestellt werden soll.
Dann hast du mich überhaupt nicht verstanden.

Wahrscheinlich doch. Aber ich habe wohl zuviele Schritte auf einmal gemacht...

Eine ganz normale MySql-Datenbank ohne Zusätze.
Eine Gruppe von 4 Leuten.
Jeder hat eine eigene eindeutige Erkennungsnummer in der Datenbank.
Wenn einer der User einen Termin einträgt, steht in der Tabelle "termine" unter dem Feld "an" seine Nummer.
Dann gibt es eine weitere Spalte "datum", die festlegt, wann der Termin ist.
In der Spalte "event" steht der Titel.

an            datum         event
  ------------- ------------- ------------------
  1204          2007-04-30    Urlaub
  815           2007-05-02    Urlaub
  1             2007-05-02    Urlaub

Nur mal so als Beipiel, wie Du sowas besser darstellen könntest für uns, als nur textuell.

Wenn bei "event" Urlaub und bei an die eigene Nutzernummer steht, soll der unter "datum" festgelegte Tag im eigenen Kalender z. B. grün angezeigt werden.

Dies ist immer in einem ganzen Monat abzufragen, also meiner Ansicht nach mit einer Schleife, die automatisch bis zum mit date(t) festgelegten letzten Tag des Monats hochzählt und alle Tage mit dem Termin "Urlaub" grün darstellt.

Hoffe es ist ein bisschen klarer geworden.

Also sollte es keinen Übersichtskalender für alle geben, in dem der Tag rot markiert wird, wenn z.B. schon zwei Leute aus der Gruppe Urlaub haben.

Da 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 lassen

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

Ich hoffe, dass DU _mich_ jetzt verstanden hast... ;-)

Harzliche Grüße vom Berg
http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau