Geburtstagsliste mit PHP

Skribi

Grünschnabel
Hallo zusammen,

ich habe eine Datenbank mit Vereinsmitgliedern, in welcher neben vielen anderen Daten über die Personen auch das Geburtsdatum gespeichert ist.

Ich möchte nun auf der Website mithilfe von PHP und SQL eine Liste ausgeben, auf welcher die 5 nächsten Geburtstage von Mitgliedern inklusive deren Namen ausgegeben werden.

Gibt es dafür ein Script, welches auf eine vorhandene DB zugreift, oder muss ich dass selber schreiben? Falls letzteres gilt, wie stelle ich das am unkompliziertesten an?

Vielen Dank für Hinweise.

Besten Gruss
Skribi
 
Da du die Datenbank-Struktur selbst erstellt hast, sehe ich keinen Grund, warum es ein solches Script schon geben sollte. Das wirst du wohl selbst schreiben müssen.

Da du anscheinend noch keine Idee hast, wie man mit PHP auf Datenbanken zugreift, empfehle ich dir ein Anfänger-Tutorial in Augenschein zu nehmen, in dem das Thema behandelt wird. Da es leider (noch) keine Suchfunktion in der Tutorials-Sektion gibt, hab ich mal was für dich rausgesucht:

http://www.tutorials.de/php-videotu...torial-6-php-und-mysql-datenbank-27-37-a.html
 
Nun ja, soweit war ich natürlich auch schon. Ich war allerdings etwas faul und hatte gehofft, dasses bereits einen Beispielcode gibt, der sich leicht anpassen lässt. Anbei meine Lösung für das Anzeigen der Mitglieder, deren Geburtstag in den kommenden 30 Tagen liegt:

PHP:
$query = "SELECT roepnaam, achternaam, birthdate FROM fa_pass0_data WHERE DAYOFYEAR(curdate()) <= dayofyear(birthdate) AND DAYOFYEAR(curdate()) +30 >= dayofyear(birthdate)
ORDER BY DAYOFYEAR(birthdate) ASC
LIMIT 5";  

$date = $arr['birthdate'];

$result = mysql_query($query);

while ($arr = mysql_fetch_array($result))
{
 echo "<b>".$arr['roepnaam']."&nbsp".$arr['achternaam']."</b>"."&nbsp"."<span class=\"lessimportanttext\">".date('d.m.Y', strtotime($arr['birthdate']))."</span>";
 echo "<br>";
}
 
Hmm, ich hab das jetzt nicht geprüft, aber für mich sieht der Code so aus, als würde beispielsweise folgendes Szenario nicht funktionieren:

Saftmeister hat am 03.01. (fiktiv) Geburtstag und heute ist der 26.12. (fiktiv).
 
Hm, beim Jahresende mag deine Vermutung stimmen. Ich habe dafür allerdings keine Lösung parat, dies übersteigt dann doch meine Kenntnisse...

...bin aber für Verbesserungsvorschläge immer offen.
 
Möglicherweise geht das mit Hilfe von DATE_ADD etwas genauer. Folgendes Beispiel-SQL:

SQL:
SELECT dayofmonth( date_add( '2011-12-26', INTERVAL 30
DAY ) ) , month( date_add( '2011-12-26', INTERVAL 30
DAY ) )

Wenn du das DAYOFYEAR beim Tag gegen DAYOFMONTH und beim Monat gegen MONTH austauschst, kommt das in etwa hin. Ich werde noch kein komplettes Beispiel posten, versuch es zunächst selbst raus zu finden. Wenn du nicht weiter weißt, zeig deinen Versuch und darüber diskutieren wir dann :-)
 
Zurück