Geburtstag in Zukunft ausgeben

dreambaser

Erfahrenes Mitglied
Hallo Leute,

ich brauch mal eure Hilfe. Ich möchte ein Geburtsdatum welches in der Datenbank abgelegt ist, ausgeben. Allerdings nicht erst an dem Tag an dem der oder diejenige Geburtstag hat, sondern schon 5 Tage vorher. Also vom Prinzip her soll die Meldung dann kommen : Mr. X hat in 5 Tagen am xx.xx.2008 Geburtstag und das soll bis zu dem Tag erscheinen, an dem dann der Geburtstag ist, sozusagen als Erinnerung.

Wie kann man soetwas angehen? Hat jemand Erfahrung damit?

Danke
mfg
Dreambaser
 
Hi, würde die Datenbank so aufbauen:

ID DATUM GEBURTSTAG

Dann stellst du die Abfrage einfach so ein:

HTML:
SELECT * FROM tabelle WHERE datum >= now() ORDER BY datum ASC LIMIT 2"

Limit 2 zeigt eben die kommenden 2 Geburtstag an..
 
Und ich habe genau soetwas auf meiner Homepage verbaut.

Hat extrem lange gedauert bis das dingen auf den Tag genau funktioniert hat. Es gab Probleme mit der Altersberechnung wenn der Tag des Geburtstages gekommen ist etc.

Aber nun folgende Lösung:
Code:
CREATE TABLE birthday (
`id` int(4) NOT NULL auto_increment,
`name` varchar(50) NOT NULL default '',
`datum` date NOT NULL default '0000-00-00',
PRIMARY KEY  (`id`)
);

PHP:
	$datumaktuell = date("Y");
	
	$abf2 = $sqlconn->queryResult("SELECT DATEDIFF(CONCAT(YEAR(CURDATE()), DATE_FORMAT(datum, '-%m-%d')), curdate()) as next, round((DATEDIFF(CONCAT(YEAR(CURDATE()), DATE_FORMAT(datum, '-%m-%d')), datum)) / 365.25, 0) as wird, datum, name, id FROM birthday HAVING next >= 0 ORDER BY next LIMIT 1;");
	$row2 = $abf2->getObjOfPosition(0);
	
	$datumformat = date("d.m.Y",strtotime($row2->datum));
	$alter = $row2->wird;
	$next = $row2->next;
	
	if ($next == 0) $lineadd = 'heute  ';
	else if ($next == 1) $lineadd = 'morgen  ';
	else $lineadd = 'in '.$next.' Tagen ';
	
	if ($next >= 0) {
		return 'Nächster Geburtstag:<br /><b>'.$row2->name.'</b> wird  '.$lineadd.$alter;
	}

Ich nutze aber einige Klassen für die SQL-Verbindung
Also müsstest du ein ganz bischen umschreiben - aber sollte nicht das Problem sein.

Der SELECT findet immer den nächsten der in der mySQL Tabelle Geburtstag hat ;)

EDIT:
Anwendungsbeispiel auf meiner Homepage ganz oben (Links neben login): http://de.klein0r.de/news.html

lg
 
Zuletzt bearbeitet:
Hallo,

wie alt derjenige wird kannst du auch mit
SQL:
YEAR(CURDATE()) - YEAR(datum) AS wird
ermitteln.

Schöne Grüße
Marvin Schmidt
 
Hast du alles hinbekommen? Wenn ja - bitte setz das Thema doch auf Erledigt.
Ein wenig Feedback wär schön!

lg
 
Zurück