
46356
01.12.2007, aktualisiert am 08.05.2011
Alter in PHP berechnen
Hallo
Leider konnte ich das Thema in meinem alten Beitrag nicht fortsetzen, da dieser von einem Moderator geschlossen wurde.
Deshalb eröffne ich einen neuen...
Ich würde gerne mittels PHP das Alter von einem User ausgeben...
Das Geburtsdatum ist in meiner Datenbank gespeichert, und der Script klappt auch prima, wenn es nicht mehrere Benutzer mit dem gleichen Adressen Wert geben würde...
Mein Script:
Ich glaube, dass PHP die Werte der db ddiert...
Aber wie gesagt, ich weiß nicht wo der Fehler liegt, denn der obere Teil des Scripts funktioniert bereits ganz gut!
Vielen Dank für Eure Mithilfe
Leider konnte ich das Thema in meinem alten Beitrag nicht fortsetzen, da dieser von einem Moderator geschlossen wurde.
Deshalb eröffne ich einen neuen...
Ich würde gerne mittels PHP das Alter von einem User ausgeben...
Das Geburtsdatum ist in meiner Datenbank gespeichert, und der Script klappt auch prima, wenn es nicht mehrere Benutzer mit dem gleichen Adressen Wert geben würde...
Mein Script:
$abfrage = "SELECT Fullname, Photo, Adress, Day, Month, Year FROM GENERALLY WHERE Adress LIKE 'michigansee'";
$ergebnis = mysql_query($abfrage);
if (mysql_errno()) die ("MySQL-Error: " . mysql_error());
while($row = mysql_fetch_object($ergebnis))
{
echo "<font face='Arial'>";
echo "<table border='0'>";
echo "<tr>";
echo "<td width='50px'>";
echo "Name: <br> <br> Stadt:";
echo "</td>";
echo "<td width='270px'>";
echo "$row->Fullname <br><br> $row->Adress";
echo "</td>";
echo "<td>";
$photo = $row->Photo;
echo "<br><img src='".$photo."'>";
echo "</td>";
echo "<br>";
echo "<img src='/images/pixel_red.jpg' width='481px' height='1px'>";
echo "</font>";
// Age
$day = $row->Day;
$month = $row->Month;
$year = $row->Year;
$jetzt = mktime(0,0,0,date("m"),date("d"),date("Y"));
$geburt = mktime(0,0,0,$month,$day,$year);
$age = intval(($jetzt - $geburt) / (3600 * 24 * 365));
echo "<br>";
echo $age . " Jahre alt";
}
Ich glaube, dass PHP die Werte der db ddiert...
Aber wie gesagt, ich weiß nicht wo der Fehler liegt, denn der obere Teil des Scripts funktioniert bereits ganz gut!
Vielen Dank für Eure Mithilfe
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 74973
Url: https://administrator.de/forum/alter-in-php-berechnen-74973.html
Ausgedruckt am: 03.04.2025 um 18:04 Uhr
13 Kommentare
Neuester Kommentar
Mach mal unter der Zeile:
echo $age . " Jahre alt";
ein
unset ($age);
Damit wird die Varible $age gelöscht und beim nächsten Aufruf neu angelegt. Dann gibt es auch nichts mehr zuaddieren ...
Kleiner Tip: Speichere ein Datum in einer DB nicht als 'Tag', 'Monat', 'Jahr' ab, sondern als Unix-Timestamp. Macht erstens die DB schlanker und zweitens hast du immer Werte die du für derartige Berechnungen nicht erst konvertieren musst.
echo $age . " Jahre alt";
ein
unset ($age);
Damit wird die Varible $age gelöscht und beim nächsten Aufruf neu angelegt. Dann gibt es auch nichts mehr zuaddieren ...
Kleiner Tip: Speichere ein Datum in einer DB nicht als 'Tag', 'Monat', 'Jahr' ab, sondern als Unix-Timestamp. Macht erstens die DB schlanker und zweitens hast du immer Werte die du für derartige Berechnungen nicht erst konvertieren musst.
Naben zusammen.
Also die Sach mit dem unset($age); finde ich unnötig denn es wird nirgends ein Wert zu dieser Variable hinzuaddiert und durch $age=n; wird die Variable mit einem neuem Wert belegt, dieser wird jedoch nicht hinzuaddiert.
Anstelle von $jetzt = mktime(0,0,0,date("m"),date("d"),date("Y")); würde ich $jetzt=time(); verwenden.
Dein Scriptteil welches das Alter berechnet funktioniert bei mir:Ausgabe bei mir:
1 Jahre alt
0 Jahre alt
Dann schau doch mal was für Werte in der DB stehen, vielleicht kommt ja wirklich etwas falsches herraus.
Musste ich auch gerade erst lernen ;)
Gruß Arano
Edit: Man was tipp ich langsam... !?
Also die Sach mit dem unset($age); finde ich unnötig denn es wird nirgends ein Wert zu dieser Variable hinzuaddiert und durch $age=n; wird die Variable mit einem neuem Wert belegt, dieser wird jedoch nicht hinzuaddiert.
Anstelle von $jetzt = mktime(0,0,0,date("m"),date("d"),date("Y")); würde ich $jetzt=time(); verwenden.
Dein Scriptteil welches das Alter berechnet funktioniert bei mir:
<?php
// ich hatte anfang des jahres geburtstag und wurde 1 jahr alt
$day = 30;
$month = 1;
$year = 2006;
$jetzt = mktime(0,0,0,date("m"),date("d"),date("Y"));
$geburt = mktime(0,0,0,$month,$day,$year);
$age = intval(($jetzt - $geburt) / (3600 * 24 * 365));
echo $age . " Jahre alt";
echo "<br>";
// ich wurde ende letzten jahres gebohren und werde erst noch 1 jahr alt (bin 0 jahre alt)
$day = 30;
$month = 12;
$year = 2006;
$jetzt = mktime(0,0,0,date("m"),date("d"),date("Y"));
$geburt = mktime(0,0,0,$month,$day,$year);
$age = intval(($jetzt - $geburt) / (3600 * 24 * 365));
echo $age . " Jahre alt";
echo "<br>";
?>
1 Jahre alt
0 Jahre alt
Dann schau doch mal was für Werte in der DB stehen, vielleicht kommt ja wirklich etwas falsches herraus.
Kleiner Tip: Speichere ein Datum in einer DB nicht als 'Tag', 'Monat', 'Jahr' ab, sondern als Unix-Timestamp...
Klingt so als sollte man es immer so machen. Aber das kommt natürlich auf den Verwendungszweck an ! Wenn du das Geburtsdatum nur ausgeben möchtest wäre ein Unixtimestamp nicht so Praktisch weil man es dann erst umrechnen müsste. Allerdings den Geburtstag, -monat und -jahr einzelnd in die DB zu speichern vielleicht auch nicht die besste Lösung, da wäre ein Feld mit dem Typ "DATE" evtl, besser. Wie wir sehen ist es immer wichtig zuwissen wie wir den Wert verwenden möchten und dementsprechend die Art der Speicherung zu wählen.Musste ich auch gerade erst lernen ;)
Gruß Arano
Edit: Man was tipp ich langsam... !?
Jup kann ich ^^
Schau dir mal mysql_num_rows() an, als Rückgabewert erhälst du die Anzahl der ausgelesenen Zeilen (Treffer). Die verbaust du in eine IF-Bedingung und prüfst ob das Ergebnis größer als 0 ist.
Gruß Arano
Schau dir mal mysql_num_rows() an, als Rückgabewert erhälst du die Anzahl der ausgelesenen Zeilen (Treffer). Die verbaust du in eine IF-Bedingung und prüfst ob das Ergebnis größer als 0 ist.
<?php
if(mysql_num_rows($result)>=1){
while($treffer = mysql_fetch_assoc($result)){
echo $treffer['Fullname'].'<br>';
}
}
else{
echo 'Deine Suche ergabe leider kein Ergebnis.<br>';
}
?>
Gruß Arano