Altersproblem

V

Vogt

Gast
Hallo @ all,

ich bin nicht das super PHP-Genie drum hab ich ein paar fragen nächlich wie kann ich

- wenn ich mein geburtsdatum auf meiner internetseite angebe mein alter automatisch ein jahr dazuzählen lassen wenn mein geburtstag ist, also ich mein...

ich bin am 13.07.1991 geboren und auf meiner hp steht statisch 16 jahre darauf
was kann ich machen, dass das statische alter jedes jahr wenn der 13.7. ist eins dazuzählen also wenn jetzt dieses jahr der 13.7 ist das nicht mehr 16 auf der seite steht sondern automatisch 17 kommt.

ich hab schon etliche bücher druchgewälzt bin aber auf nichts mir plausibles gestoßen, könnt ihr mir helfen?

mit freundlichen grüßen

patrick :)
 
das ist reine Mathematik

HTML:
<?PHP

$aktuellesjahr=date("Y",time());
$geboren="1991";
$alter=$aktuellesjahr-$geboren;
echo $alter;

?>
 
Erst einmal ein Herzliches Willkommen, Vogt. Setz Dich aufs Boardsofa und mach es Dir gemütlich :)

Nun zum Problem:
Die obige Funktion krankt (ein wenig) an einer Sache:
Ich habe z.B. nicht am 1. Januar Geburtstag und so lange der richtige Tag im Jahr nicht überschritten wurde, macht sie mich ein Jahr älter - was ich natürlich auf keinen Fall sein will ;)

Man kann ja auf diesem Script aufbauen, genauer gesagt, es etwas abspecken:
Code:
<?php
function date_diff($d1, $d2){
    $d1 = (is_string($d1) ? strtotime($d1) : $d1);
    $d2 = (is_string($d2) ? strtotime($d2) : $d2);

    $diff_secs = abs($d1 - $d2);
    $base_year = min(date("Y", $d1), date("Y", $d2));

    $diff = mktime(0, 0, $diff_secs, 1, 1, $base_year);
    return array(
        "years" => date("Y", $diff) - $base_year,
        "months_total" => (date("Y", $diff) - $base_year) * 12 + date("n", $diff) - 1,
        "months" => date("n", $diff) - 1,
        "days_total" => floor($diff_secs / (3600 * 24)),
        "days" => date("j", $diff) - 1,
        "hours_total" => floor($diff_secs / 3600),
        "hours" => date("G", $diff),
        "minutes_total" => floor($diff_secs / 60),
        "minutes" => (int) date("i", $diff),
        "seconds_total" => $diff_secs,
        "seconds" => (int) date("s", $diff)
    );
}

$a = date_diff("2006-11-01", "2007-11-01");

echo "<pre>";
print_r($a);
echo "</pre>";
?>

Tipp: in $d2 gehört die aktuelle Zeit ;)

Es gibt aber noch einen Haufen anderer Funktionen in der Art, evtl hilft es, wenn man einmal hier oder hier nachsuchen lässt, vielleicht hat ja schon jemand eine genau passende geschrieben...
 
Zuletzt bearbeitet:
Frage

Des is nur so, dass i net so genau weis wie i des da angeben soll in $d2. Einfach des normale datum reinschreiben? Einfach z.B. 11.01.2008? $d2 ist ja ne variable, da blick ich das ganze nicht ganz durch. :)

da kommt immer folgender text als ausgabe:
Array
(
[years] => 1
[months_total] => 12
[months] => 0
[days_total] => 365
[days] => 0
[hours_total] => 8760
[hours] => 0
[minutes_total] => 525600
[minutes] => 0
[seconds_total] => 31536000
[seconds] => 0
)

wenn ich nach dem muster des oben stehenden codes vorgehe, also ich meine den 2. code
 
Zuletzt bearbeitet:
Es geht auch einfacher;)
PHP:
<?PHP
//Deinen Geburtstag eingeben
$tag="26"; 
$monat="05";
$jahr="1965";

$now_year=date("Y",time());
$now_month=date("m",time());
$now_day=date("d",time());

$old=$now_year-$jahr;
if($now_month<=$monat && $now_day<$tag)
$old--;

//Ausgabe
echo "Du bist ".$old." Jahre alt";
?>
 
Das lässt sich aus der Funktion von HeikeFy ableiten:

time() ist der gesuchte Begriff.

Für $d2 kann nahezu alles eingegeben werden, was man will, da der Zeitstring im Zweifelsfall erstellt wird. Man kann die time() Funktion, die den Zeitstempel zurück gibt, direkt verwenden.

Ich hoffe aber, dass ein PHP Spezialist diese Aussage überprüft, nicht dass es hinterher heißt: Was hast Du denn für einen Sch... geschrieben ;)

Da ich selbst nicht besonders fit in PHP bin, muss ich ansonsten leider auf PHP: date - Manual und PHP: time - Manual für weitere Optionen zum diesen Funktionen und weitere Beispiele zur Datumsberechnung verweisen...

edit:
Astro war 'nen Tacken schneller, er hat wohl schon auf Antworten gedrückt, als ich noch geschrieben habe - aber die Manual Seiten sind dennoch lesenswert... ;)
 
Das Problem des Zeitstempels ist, das manche Systeme (z.B.Windows) keinen negativen Wert akzeptieren.
Einen Geburtstag vor dem 1.1.1970, ergibt dort nur eine häßliche Fehlermeldung.

Daher lässt sich bei Geburtstagen schlecht mit Timestamps rechnen.

Aber mein Script funktioniert trotzdem.:D
 
danke

danke euch allen
ihr seit mir eine große hilfe
ohne euch hätt ich dies nie herausgefunden, ich habe zwar ein PHP-Buch, allerdings ist das nur für einsteiger

danke
lg patrick
 
noch ne frage

da hab ich noch eine frage, wie kan ich einen icq-butten, wie oben bei den namen, in meine homepage einbauen, mir ist klar das die blume nur ein bild ist, aber wie funktioniert es das mir dann eine nachricht geschickt wird? könnt ihr mir da auch wieder weiterhelfen? wäre nett von euch
lg patrick vogt
 
Bei dem Button mit dem Bild wird Dir keine Nachricht geschickt, der ist eine reine Statusanzeige.
HTML:
<img src="http://status.icq.com/online.gif?icq=XXXXXXX&img=21">
XXXXXXX musst Du durch Deine ICQ Nummer ersetzen werden und schon sieht man, ob Du online bist, oder nicht. Dass das hier im Board funktioniert, liegt an der Boardsoft, da müsste evtl. jemand antworten, der den entsprechnden Code kennt.

Nachrichten aus der Webseite heraus versenden würde aber über ein ICQ Panel funktionieren.

Panels zur Verwendung auf der HP gibts hier:
The ICQ Panels - ICQ Web Tools - ICQ.com
 
Oben