Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

PHP / MySQL - Geburtstagserinnerung

Hallo,

ich habe mir eine Datenbank angelegt, inwelche ich den
Namen, Vornamen, das Geburtsdatum und das aktuelle Datum
eintrage.

Datumsformat: YYYY-MM-DD

So, jetzt kommt mein Problem,
1.) wie errechne ich jetzt das Alter und
2.) wie erreche ich die Tage, bis derjenige wieder Geburtstag hat.

<?
$abfrage = "SELECT * FROM personen";
$ergebnis = mysql_query($abfrage);


while($row = mysql_fetch_object($ergebnis))
   {
$Vorname=$row->Vorname;
$Name = $row->Name;
$Geburtsdatum = $row->Geburtsdatum;
$Heute = $row->Heute;
$Alter = $Heute - $Geburtsdatum;


echo "$Vorname $Name, geb. am $Geburtsdatum; ist $Alter Jahre alt.<br>
Heute ist der $Heute<br>";

   }
?>

Wobei das mit dem Alter anscheinend so funktioniert wie ich das gemacht habe, jedoch ist das Problem Nr. 2 noch nicht gelöst, ich weiß auch nicht wie ich daran gehen sollte?



Vielen Dank im Voraus


MfG
Dommschwenker

Antworten zu PHP / MySQL - Geburtstagserinnerung:

Poste mal deine Datenbankstructur und einen Beispieldatensatz, ich komm mit dem "Heute" noch nicht zurecht.

MFG
BWA

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Ich würde dir empfehlen, mit den MySQL-Datumsfunktionen zu arbeiten. Damit kannst du alle nötigen Berechnungen gleich in der Datenbank machen lassen und dir mit im Resultset ausgeben lassen.

Die Verwendung von UNIX Timestamps macht bei einer solchen Geburtstagsdatenbank keinen Sinn, da die UNIX-Epoche ja erst 1970 begonnen hat, und es soll ja Leute geben, die eher geboren sind ;)

greez 8)
JoSsiF

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Datenbankname: geb
Tabellennamen: personen

Tabelleninhalt:
id, int(5), auto_increment, Primärschlüssel
Name, varchar(25)
Vorname, varchar(25)
Geburtsdatum, date, Ja, NULL
Heute, date, Ja, NULL


@BWA
Das mit dem Heute ist eigentlich nur dazu gedacht, als kontrolle für mich, ob er auch das heutige Datum genommen hat, die ausgabe davon kann man auch weglassen.

@JoSsiF
- Welche MySQL-Datumsfunktion müsste ich denn da verwenden?
- Wenn ich die Berechnung in der Datenbank ausführen will/muss, muss ich dann auch immer erst die Datenbank öffnen und die Berechnung durchführen lassen oder kann ich das auch direkt auf der PHP-Seite?
- Welche Zeit soll ich dann verwenden? UNIX leuchtet mir jetzt ein, wo du es sagst, dass die ja nicht funktioniert.



Vielen Dank im Voraus

MfG
Dommschwenker

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Als Format für die Datumsspalte ist "date" schonmal richtig, denn damit kann MySQL gut rechnen. Die Spalte "heute" kannste dir schenken, dafür kennt MySQL die Funktion NOW() für aktuelles Datum+Zeit bzw. CURDATE() nur fürs Datum.

Was meinst du mit "muss ich dann auch immer erst die Datenbank öffnen und die Berechnung durchführen"? Für eine Abfrage öffnest du doch die DB sowieso. Und die Datumsberechnungen machst du im SELECT.

Um das Alter zu berechnen, machste einfach TO_DAYS(NOW())-TO_DAYS(Geburtsdatum))/365 und vergibst dafür einen Alias (mit AS), um das auch vernünftig ansprechen zu können in PHP.

Die Anzahl Tage bis zum nächsten Burzeltag solltest du rausbekommen mit DAYOFYEAR(Geburtstag)-DAYOFYEAR(NOW()). Das kann dann natürlich zu negativen Werten führen, wenn der Geburtstag im aktuellen Jahr schon war. In dem Fall kurze if-Anweisung in PHP und nochmal 365 Tage addieren.

greez 8)
JoSsiF

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Danke dir auch für die erklärung, wieder etwas gelernt nur

nochmal 365 Tage addieren.

wenn es ein schaltjahr ist, müssen 366 tage schon addiert werden ;-)

gruß
der_webi

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
wenn es ein schaltjahr ist, müssen 366 tage schon addiert werden ;-)

Richtig, da haste recht. Die Lösung jetzt war auch mal so 'ne kleine Gedankenstütze. Spezialfälle waren nicht berücksichtigt ;)

« Onlinestream auf der HomepageIch suche eine gratis Homepage-Base (inkl. FTP) »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Datenbank
Eine Datenbank (DBS), im englischen database, ist eine strukturierte Datensammlung und fungiert wie ein "digitales Archiv". Datenbanken dienen der effizienten Aufbewahrun...

Quellcode
Ein Quellcode, auch als Quelltext bekannt, bezeichnet den unkompilierten Programm-Code einer Software. Quell- oder Programm-Code ist der auch für Menschen lesbare Co...

Unicode
Unicode ist ein international anerkannter Standard, der als universeller Zeichencode ("Universal Code") dient und durch das Unicode-Konsortium entwickelt und verwaltet wi...