Alter berechnen aus Datenbank Datum

Am einfachsten ist es so :D

Code:
$tag = "01";
$monat = "05";
$jahr = "1975";

$time = mktime(0,0,0,date("m"),date("d"),date("Y")); 
$birthday = mktime(0,0,0,$monat,$tag,$jahr); 
$alter   = intval(($time - $birthday) / (3600 * 24 * 365));

echo "$alter";

mfg :D
 
das script is ganze nett =)

nur wie liest du aus der Datenbank die Daten aus und gebrauchst sie?
PHP:
<?
$id = 1;  // Über ID Abfragen is immer noch das beste !
$tabelle = "Geburtstagstabelle";
$sql1 = "SELECT tag FROM ".$tabelle." WHERE `id`=".$id.")"; 
$sql2 = "SELECT monat FROM ".$tabelle."  WHERE `id`=".$id.")"; 
$sql3 = "SELECT jahr FROM ".$tabelle."  WHERE `id`=".$id.")"; 

$tag = mysql_query($sql1);
$monat = mysql_query($sql2);
$jahr = mysql_query($sql3);

dein script
?>

das setzt aber vorraus das ich für tag monat und jahr jeweils eine spalte habe !
Würde das nich irgendwie gehen mit explode befehlen!?
die z.b. einen "1-1-1970" tag aufteilen würden ?! // wer dazu ne idee hat, würde mir zumindest sehr helfen

PS: Falls hier irgendwelche Denkfehler vorhanden sind. ich kanns (oda auch nich) erst seit knapp ner Woche relativ gut =).. es sei mir bitte verziehen..
 
Original geschrieben von proloser
Am einfachsten ist es so :D

Code:
$tag = "01";
$monat = "05";
$jahr = "1975";

$time = mktime(0,0,0,date("m"),date("d"),date("Y")); 
$birthday = mktime(0,0,0,$monat,$tag,$jahr); 
$alter   = intval(($time - $birthday) / (3600 * 24 * 365));

echo "$alter";


mfg :D
, aber kann mir das jemand erläutern?
 
Original geschrieben von Karl Förster
Also ich benutze zur Altersberechnung seit einiger Zeit folgende Funktion in MySQL ... funktionier tadellos mit einem DATETIME-Feld:

PHP:
$sql = "SELECT ".
      "(YEAR(CURRENT_DATE) - YEAR(Datum)) - ".
      "(RIGHT(CURRENT_DATE,5) < RIGHT(Datum,5)) AS age ".
      "FROM tabelle";

// usw.

Abgesehen davon das dies funktionieren mag, wenn man die DB danach aufbaut, so finde ich das ganze für "Layen" etwas extrem.

Ich verstehe nicht, warum man nicht einfach die DB wie folgt abfragt:

PHP:
<?php
// das Jahr 2004 festlegen. Ändert sich automatisch auf 2005, wenn wir 2005 hätten.
$year = date("Y");

// DB - Auftrag - vorausgesetzt du hast id auch auf index eingestellt.
$res = mysql_query("SELECT id, name, geb FROM tabelle ORDER BY id");

// Ergebnis der DB-Abfrage ausgeben
while($ergebnis = mysql_fetch_object($res)) {

// Vereinfachen der Schreibe - nur dann, wenn es mehr Spalten sind ;)
   $id = $ergebnis->id;
   $na = $ergebnis->name;

// Das Geburtsdatum aus der Tabelle (geb) aufteilen um das Jahr zu ermitteln
   $ja = explode("-", $ergebnis->geb);

// Ausgabe des Array von explode ist an erster Stelle (0) das Jahr.
   $jahr = $ja[0];

// einfache Jahresberechnung - ausgehend vom heutigen Jahr abzüglich Geburtsjahr
   $alter = $year - $jahr;

// Ausgabe der Daten.......
   echo "$id&nbsp;$na&nbsp;$alter<br>";
}
?>

Wo ist darin nun das Problem? Mehr als die Jahre kann man nicht berechnen und wenn man es genau haben will mit Zeit und vollständigem Datum muss man eben mktime bemühen. All das kann man im Manual nachlesen von PHP und wenn du das nicht hast, klick mal auf die Links in der Signatur. ;)

Es gibt aber neben dieser Möglichkeit noch andere....... ist also nur des Verständnis halber so aufgebaut............lese und lerne..........
 
Zuletzt bearbeitet:
Um die Frage zu beantworten:
PHP:
$tag = "01";    // Geburtstag
$monat = "05";  // Geburtsmonat
$jahr = "1975"; // Geburtsjahr

// Ermitteln der seit 1970 vergangenen Sekunden bis zum Geburtstag
$time = mktime(0,0,0,date("m"),date("d"),date("Y"));

// Ermitteln der bis heute vergangenen Sekunden bis zum jetzigen Zeitpunkt
// (wobei man das mit time() auch einfacher machen könnte)
$birthday = mktime(0,0,0,$monat,$tag,$jahr);

// $time - $birthday ermittelt die Sekunden, die vom Geburtstag bis heute vergangen sind
// Dieser Wert wird anschließend durch die Anzahl der Sekunden eines Jahres Dividiert
// und man erhält das Alter in Jahren
$alter   = intval(($time - $birthday) / (3600 * 24 * 365));

// Ausgabe
echo "$alter";

snuu
 
Original geschrieben von Gumbo
In deinem Beispiel werden die Menschen alle am Neujahrstag ein Jahr älter, saila.

Korrekt, deshalb schrieb ich auch dazu, das man dann eben mit mktime arbeiten muss. Auf der einen Seite geht es darum keine vollständigen Scripte hier zu posten, damit Fragende selbst was tun sollen und andererseits wird es dann doch getan.

Da bleibe ich wenn dann schon bei der Version, das ich einen Lösungsvorschlag geben, aber ihn in so offen lasse, das jeder noch was dran rumbasteln kann.

Leider muss ich mich auch nochmal darauf hinweisen Gumbo - wer lesen kann ist klar im Vorteil
 
Willst du mir damit die Nichtfähigkeit des Lesens unterstellen? Mit meinem letzten Beitrag wollte ich den Autor dieses Themas, jc-freak, und dich nur auf diese Tatsache hinweisen.

Mag sein, dass du meinen Beitrag falsch aufegefasst hast, doch in meinen Augen entspricht dein Beispiel etwa: „Das Alter lässt sich ermitteln, indem man das Geburtstdatum vom heutigen Datum subtrahiert.“
Für jemanden, für den die Umsetzung solch einer Thematik „Neuland“ ist, bringt eine solche Aussage nichts. Da zeihe ich doch lieber fertige Beispiele vor, auch wenn sie die Didaktik nicht besonders fördern.
 
Zurück