Alter ausrechnen

Status
Nicht offen für weitere Antworten.

maga147

Erfahrenes Mitglied
Hallo!

ich hab hier ein kleines Scriptchen, mit dem ich Geburtstage aus einer Datenbank auslese, und wenn jemand Geburtstag hat, Gibt es einen Text aus.

PHP:
while ($ausgabe = mysql_fetch_array ($result))
{
echo'' ;
$geburtsdatum=explode(".",$ausgabe["Geburtsdatum"]);
if (($geburtsdatum[0]==date("d")) && ($geburtsdatum[1]==date("m")))
{
echo '<p style="text-align:center"><font size=6 color="FFFF00" face="Verdana"><big><b>'.$ausgabe["Vorname"].' '.$ausgabe["Nachname"].' hat heute Geburtstag!</big></b></font></style>';
}
echo'';
}
echo'';

Jetzt möchte ich, dass er mir

PHP:
'.$ausgabe["Vorname"].' '.$ausgabe["Nachname"].' wird heute $Alter alt!

ausgibt.

Wie kann ich die Variable Alter ausrechnen?

Funktioniert das mit
PHP:
$alter = date("d")-'.$ausgabe["Geburtsdatum"].'
?
 
1) Eine Variable, die in einen String eingebettet ist, der zwischen zwei Singlequotes ' steht, wird nicht geparsed. Im Klartext, du hättest dann $Alter im Text stehen, an Stelle der konkreten Zahl.

2) Variablen sind case-sensitive. Das heisst, wenn du eine Variable $alter definierst, kannst du diese nicht via $Alter ausgeben. Groß-/Kleinschreibung ist halt nicht nur in der deutschen Schriftsprache von Bedeutung. ;)

3) <font> zur Formatierung von Textpassagen in HTML ist ja wohl sowas von alt, verboten und unpraktisch. <span> plus CSS solltest du dir mal dringend zu Gemüte führen.

4) Last but not least zu deinem eigentlichen Problem. Wenn du bereits festgestellt hast, dass die Person heute Geburtstag hat, dann kannst du doch einfach über
PHP:
$alter = date("Y") - $geburtsJahr;
das Alter berechnen. Wo war da jetzt der große Trick bei?
 
@reptiler

Sorry.... Da hab ich heute irgendwie gar nicht drangedacht :rolleyes:

@Tim Comanns

Die Variable $geburtsJahr ist nicht definiert....

Ich habe nur das gesamte Geburtsdatum als z.b 30.05.2005 in der Datenbank....

Da kann ich (nach meinem wissen) das Jahr nicht ausgegeben, oder?
 
Naja, nicht so schlimm.

Um das Jahr aus dem Datum zu bekommen gibt es zwei Wege, Du kopierst die letzten 4 Stellen des Strings in eine seperate Variable oder Du wandelst das Datum mit mktime in einen Timestamp um und nutzt dann date um die einzelnen Teile des Datums zu erhalten.
 
uff...

Das wirkt für mich irgendwie zu Kompliziert.....

Bin noch Blutiger Anfänger!

Kannst du vielleicht mal ne Zeile Coden, die mir das macht....

Wäre super!
Danke!
 
Uebrigens, vergiss die zweite Loesung, dafuer musst Du sowieso erstmal den Text splitten.
Also:
PHP:
$datum="01.01.2005";
$tag=substr($datum,0,2);
$monat=substr($datum,3,2);
$jahr=substr($datum,6,4);
Das sollte dann darin resultieren, dass $datum=="01", $monat=="01" und $jahr=="2005" sind.
 
öhm.... irgendwo muss ich nen Fehler gemacht haben

PHP:
$dbverbindung = mysql_connect ($host, $user, $password);
$dbanfrage = "SELECT * from $tabelle";
$result = mysql_db_query ($dbname, $dbanfrage, $dbverbindung);
while ($ausgabe = mysql_fetch_array ($result))
{
echo'' ;
$geburtsdatum=explode(".",$ausgabe["Geburtsdatum"]);
$datum="01.01.2005";
$tag=substr($datum,0,2);
$monat=substr($datum,3,2);
$jahr=substr($datum,6,4); 
$alter = date("y") - $geburtsjahr; 
if (($geburtsdatum[0]==date("d")) && ($geburtsdatum[1]==date("m")))
{
echo '<p style="text-align:center"><font size=6 color="FFff00" face="Verdana"><big><b>'.$ausgabe["Vorname"].' '.$ausgabe["Nachname"].' hat heute Geburtstag!</big></b></font></style>';
}
echo'';
}
echo'';
echo "$alter";

Als alter wird mir 5 ausgegeben!
 
Funktioniert auch mit Geburtsdaten vor 1970:

PHP:
function calculate_age($birth_day, $birth_month, $birth_year) { 
 
	 $datestamp = date("d.m.Y", time()); 
	 $t_arr = explode("." , $datestamp); 
 
	 $current_day = $t_arr[0]; 
	 $current_month = $t_arr[1]; 
	 $current_year = $t_arr[2]; 
 
	 $year_dif = $current_year - $birth_year; 
 
	 if(($birth_month > $current_month) || ($birth_month == $current_month && $current_day < $birth_day)) 
		 $age = $year_dif - 1; 
	 else 
		 $age = $year_dif; 
 
	 return $age; 
 
}
 
Status
Nicht offen für weitere Antworten.
Zurück