Geburtstagsdatum ausgeben

Grunge

Erfahrenes Mitglied
Hallo Leute,

ich bin verzweifelt. Ich hab nun schon gesucht, aber leider nichts passendes gefunden. Ich möchte aus einer Datenbank Geburtstage mit dem heutigen Datum vergleichen, und falls jemand heute Geburtstag hat den Nickname ausgeben. Das zu hab ich mit Explode Monat und Tag "extrahiert" und diese mit dem heutigen verglichen. Es funktioniert aber nicht, es kommt keine Ausgabe, aber auch keine Fehlermeldung. Wo könnte der Fehler liegen!?

Die mysql-spalten namen stimmen =(

Danke im Vorras
PHP:
$sql="SELECT nick,birthday FROM users";
		$result=mysql_query($sql) or die(mysql_error());
		while($row = mysql_fetch_assoc($result)) {
		
		$datum= explode ('-',$row['birthday']);
	$birthday=$datum[2].".".$datum[1];
	$now=getdate();
	$datum2=explode('-',$now);
	$today=$datum2[2].".".$datum2[1];
	
	if ($today == $birthday) {
	$alter=$datum2[0] - $datum[0];
	echo "<a href=\"\" target=\"\">".$row['nick']." (".$alter.")</a>,";
	
	}
	}
 
Warum machst Du das nicht im Query?
SQL:
SELECT
  `nick`,
  `birthday`,
  YEAR(NOW()) - YEAR(`birthday`) AS `age`
FROM
  `users`
WHERE MONTH(NOW()) = MONTH(`birthday`)
  AND DAYOFMONTH(NOW()) = DAYOFMONTH(`birthday`)
Siehe auch: Date and Time Functions

Gruß hpvw
 
Zuletzt bearbeitet:
Hm sorry für den Doppelpost, aber: wie erreiche ich folgendes: Wenn niemand geburtstag hat soll eine entsprechende Abfrage erscheinen ... wie kann diese sein!? Ich habe den Query in ein Array gespeichert ($row=mysql_fetch_assoc($result) ; $result=mysql_query($sql) ) und dann per IF folgendes abgefragt:

PHP:
if ($row > 0) {

// ALLE USER AUFLISTEN

}else{

echo "<b> Heute hat keiner Geburtstag =( </b>";
}

er zeigt mir nun zwar alle geburtstag kinder an, aber wenn niemand geburtstag hat, dann zeigt er nicht meinen text an^^=(
 
Ja danke das funktioniert auch einwandfrei...

Nun habe ich jedoch noch ein kleines problem (Wer hätt' das nur gedacht?) und zwar wenn ich die geburtstage der nächsten drei tage auslesen möchte. ich habe gedacht ich nehme deinen query und addiere einfach zu dateofmonth jeweils, ein, zwei , oder drei hinzu - aber das hat nicht funktioniert!?

hast du eine andere möglichkeit!?
 
Ja, die MySQL-Funktion DATE_ADD.
SQL:
SELECT
  `nick`,
  `birthday`,
  YEAR(NOW()) - YEAR(`birthday`) AS `age`
FROM `users`
WHERE (MONTH(NOW()) = MONTH(`birthday`)
    AND DAYOFMONTH(NOW()) = DAYOFMONTH(`birthday`))
  OR (MONTH(DATE_ADD(NOW(),INTERVAL 1 DAY)) = MONTH(`birthday`)
    AND DAYOFMONTH(DATE_ADD(NOW(),INTERVAL 1 DAY)) = DAYOFMONTH(`birthday`))
ORDER BY MONTH(`birthday`) ASC,
  DAYOFMONTH(`birthday`) ASC,
  `age` ASC,
  `nick` ASC
Gruß hpvw
 
Vielleicht wirkt es etwas übertrieben, aber es scheint zu funktionieren:
Code:
SELECT
        …
  WHERE
        TO_DAYS(`birthday`) - TO_DAYS(CONCAT(YEAR(`birthday`), '-01-01')
          BETWEEN  TO_DAYS(CONCAT(YEAR(`birthday`), DATE_FORMAT(NOW(), '%c-%d')) - TO_DAYS(CONCAT(`birthday`, '-01-01'))
              AND  TO_DAYS(CONCAT(YEAR(`birthday`), DATE_FORMAT(NOW(), '%c-%d')) - TO_DAYS(CONCAT(`birthday`, '-01-01')) + 3
 
Zurück