PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Geburtstage auslesen


xabbuh
02.03.2004, 17:20:28
In einer MySQL Tabelle habe ich eine Spalte, in der ich die Geburtstage von Personen in Form einen Zeitstempels abspeicher.

Gibt es eine Funktion mit der ich auslesen kann, welche Person heute Geburtstag hat?

feuervogel
02.03.2004, 19:19:49
du musst überprüfen ob jahr und tag und monat übereinstimmen...das wars..._ALLES_ macht dir php auch wieder nicht:P

xabbuh
02.03.2004, 19:59:35
Wenn ich das richtig verstanden habe, muss ich das folgendermaßen regeln:


$result=mysql_query("SELECT name, geb_datum FROM tabelle ORDER BY name");

while($row=mysql_fetch_array($result)){
if(date("dm", $row['geb_datum'])==date("dm")){
$geb_array[]=$row['name'];
}
}

echo "Heute haben Geburtstag: " . implode(", ", $geb_array);


Das Problem ist hierbei aber doch, dass man alle User auswählen muss egal ob die nun heute Geburtstag haben oder nicht. Hatte deswegen gehofft, dass man das schon bei der Datenbankabfrage mit irgendeiner MySQL-Funktion einengen könnte.

feuervogel
03.03.2004, 02:45:00
da gibts sicher was, aber erst mal pennen...

grob gesagt: du suchst dir den timestamp von heute 00:00 uhr und heute 23:59...und alles was drunter oder drüber ist, wird nicht ausgewählt...natürlich sind die jahre variabel...hmmmmm....

xabbuh
03.03.2004, 08:37:32
natürlich sind die jahre variabel...


Genau das ist mein Problem...

Yzerman
03.03.2004, 09:22:16
Ich verstehe auch nicht, warum Du Geburtstage als Timestamp speicherst. Hierzu ist DATE in MySQL wesentlich besser geeignet.
Ein DATE-Feld hat die Form YYYY-MM-DD.
Damit kannst Du alle Geburtstagskinder des aktuellen Tages direkt auslesen.


$query=MYSQL_QUERY("SELECT user_name FROM user_tabelle WHERE user_birthday LIKE '%".date('m')."-".date('d')."'",$db_handle);


Dann hast Du direkt nur die relevanten Datensätze.

xabbuh
03.03.2004, 17:30:36
Ich verstehe auch nicht, warum Du Geburtstage als Timestamp speicherst. Hierzu ist DATE in MySQL wesentlich besser geeignet.
Ein DATE-Feld hat die Form YYYY-MM-DD.


Warum genau ich das gemacht habe, weiß ich leider auch nicht mehr. Aber jetzt bleibt mir wohl nichts anderes mehr übrig als die Tabelle umzuschreiben oder irgendeine komplizierte Variante zu versuchen. Ich denke, ich werde die erste Möglichkeit wählen.

Trotzdem danke für eure Hilfe.

MiH
03.03.2004, 18:34:34
wozu like?

SELECT user_name FROM user_tabelle WHERE month(user_birthday) = month(now()) && dayofmonth(user_birthday) = dayofmonth(now()) && year(user_birthday) = year(now())

spaGn
27.03.2004, 12:53:39
123