Ausgabe nach Datum

dennis-sauer

Erfahrenes Mitglied
Hallo zusammen,

ich steh leider völlig auf dem Schlauch!

Ich habe eine Datenbank mit Namen, Adresse usw. und auch Geburtstagen. Nun soll der User einer (interne) Startseite öffnen, auf dieser werden dann einige Sachen angezeigt und es soll dann weil heute der 24.12.2006 ist auch der Herr Karl Ar... angezeigt werden, denn der hat ja bekanntlich an diesem Tag Geburtstag. Sobald der 25.12.2006 ist und der User nen Reload oder was auch immer macht soll der Eintrag verschwunden sein von der Seite.

Wie mach ich das?

Gruß

Dennis

P.S. Rein therotisch wäre das auch denkbar für wöchtenlich Sachen Jeden Montag kommt die Putzfrau ins Büro, das heißt jeden Montag wird dieser Eintrag angezeigt am Dienstag aber net mehr...
 
Hey Dennis!

Am besten du regelst das gleich in der SQL-Abfrage. Jede Datenbank bietet eine Funktion, um das heutige Datum zu bestimmen (z.B. CURDATE() in MySQL), mit dem du in der WHERE-Klausel die Werte der Geburtstagespalte vergleichst.

Beispiel:

Code:
SELECT firstname, lastname FROM users WHERE birthday = CURDATE()
 
Zuletzt bearbeitet:
Hi!

MySQL bietet die Funktion DAYNAME(Date), sie liefert aus dem Datum den englischen Wochentag :
Code:
SELECT * FROM Tabelle WHERE DAYNAME(Datum) = 'Monday'

Oder die Funktion: DAYOFWEEK(Datum), sie liefert die Wochentage von 1 bis 7
(1 = Sonntag bis 7 = Samstag)

Edit: ich Trottel.. erst lesen, dann schreiben...

Ich würde, wenn es Einträge für jeden Tag gibt, ein zusätzliches als Ja/Nein-Feld einfügen.
Oder du lässt das Datums-Feld frei wenn es kein Pflichtfeld ist und fragst dann anders ab:
Code:
SELECT * FROM Tabelle WHERE DATE(datum) = ... OR datum = NULL

Viele Grüße,
Jacka
 
Zuletzt bearbeitet:
Hallo,

DAYOFWEEK klingt gut ;-) Was würde denn dann in der Tabelle stehen?

Spalten mit Mo, Di, Mi... und der Wert?

Gruß und Dank

Dennis
 
Mit was für einer Datenbank arbeitest du? MySQL?

Bei MySQL würde ich als Feldwert DATE oder falls du die Uhrzeit mit eintragen möchtest, DATETIME nehmen. Dann kannst du einfacher danach abfragen.
Hier würde er jetzt jeden Eintrag auswählen, nachdem das Datum dem Wochentag Montag entspräche.
Code:
SELECT taetigkeit, datum FROM tabelle WHERE DAYOFWEEK(datum) = 2
Das Datumsfeld ist mit Jahr/Monat/Tag formatiert: 2006-12-18
Beim Ausgeben kannst du das aber ensprechend umformen -> 18.12.2006:
Code:
SELECT taetigkeit, DATEFORMAT('datum', %d. %m. %Y)  FROM tabelle WHERE DAYOFWEEK(datum) = 2

In einem weiteren Feld der Tabelle steht dann z.B. das was an dem Tag ansteht und
das Datum.
 
Hallo,

ja ich arbeite mit MYSQL.

Ablaufen soll es eigentlich so alles.

Es wird diverse Einträge geben ist leider etwas schwer zu verdeutlichen :)

mal als Beispiel (so genau sind die Spalten noch net klar)

Putzfrau Räume Montag Dienstag Mittwoch Donnerstag Freitag Datum1
Müller 101 nein Ja Nein Ja Nein 25.12.

Jetzt öffnet der Nutzer seine Seite und heute ist Dinestag dann wird Frau Müller für Raum 101 angezeigt, am nächsten Tag wird sie dann nicht angezeigt weil ja Mittwoch ist. Aber da als extra Tag noch der 25.12 angegeben ist soll sie noch am 25.12 angezeigt werden obwohl sie Montags ja eigentlich net kommen soll!

ich hoffe das war einfach zu verstehen

Gruß

Dennis
 
Dann frag nach den Einträgen, bei denen es sich um ein bestimmten Wochentag oder ein bestimmtes / aktuells Datum handelt. Z.B. so:
Code:
SELECT * FROM tabelle WHERE DAYOFWEEK(datum) = 2 OR datum = CURDATE()
SELECT * FROM tabelle WHERE DAYOFWEEK(datum) = 2 OR datum = 2006-12-25
 
Hallo,

gut alles klar danke...

Das heißt dann, ich würde das für jeden Tag machen richtig?

PHP:
SELECT * FROM tabelle WHERE DAYOFWEEK(datum) = 2 OR datum = CURDATE()
SELECT * FROM tabelle WHERE DAYOFWEEK(datum) = 3 OR datum = CURDATE()
SELECT * FROM tabelle WHERE DAYOFWEEK(datum) = 4 OR datum = CURDATE()


Dennis
 
Sollte es sich immer um die gleiche Tätigkeit handeln, wie in deinem Beispiel, kannst du das ganze auch mit AND verbinden:
Code:
SELECT * FROM tabelle WHERE DAYOFWEEK(datum) = 2 AND DAYOFWEEK(datum) = 3 
AND DAYOFWEEK(datum) = 4 OR datum = CURDATE()

So würde deine Meldung immer Montags, Dienstag, Mittwoch und wenn das Datum "heute" ist angezeigt.
 

Neue Beiträge

Zurück