also ich trage datums/zeitangaben grundsätzlich als timestamp, php funktion: time(), ein.
zum geburtstagsproblem gäbe es dann folgende lösung:
man ermittelt den aktuellen Tag im jahr mit
$today=strftime("%j",time());
(ergibt eine Zahl von 1 bis 365 bzw. 366)
liest dann alle Datensätze aus, ermittelt jeweils den Jahrestag
$yearday=strftime("%j",$data[time]);
und wählt dann denjenigen aus, bei dem die Differenz $yearday-$today den kleinsten Wert annimmt, der aber mindestens Mull sein muss.
sollte kein Datensatz diesen Bedingungen entsprechen, bedeutet das, dass in diesem Jahr keiner mehr Geburtstag hat, in diesem Fall hat als nächstes derjenige Geburtstag, der als erstes im Jahr Geburtstag hat. (3x Geburtstag in einem Satz, wow

)
hier nun der Code:
PHP:
$today=strftime("%j",time());
$mintoday=1000;
$minyear=1000;
$firstgebtoday="";
$firstgebyear="";
$command="SELECT name, time FROM tabelle";
$result=mysql_query($command);
while ($data=mysql_fetch_array($result)){
$yearday=strftime("%j",$data[time]);
$differenz=$yearday-$today;
if (($differenz>=0)&&($differenz<$mintoday){
$mintoday=$differenz;
$firstgebtoday=$data[name];
}
if ($yearday<$minyear){
$minyear=$differenz;
$firstgebyear=$data[name];
}
}
//das nächste Geburtstagskind wird ausgegeben:
if ($firstgebtoday)
if ($mintoday) echo "$firstgebtoday hat demnächst Geburtstag";
else echo "$firstgebtoday hat heute Geburtstag";
else echo "$firstgebyear hat demnächst Geburtstag";
ok, das müsste so eigentlich klappen