problem mit geburtstagsscript...

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • problem mit geburtstagsscript...

    hallöchen... i habe da nen kleines problem... und zwar habe ich auf meiner vereinsseite ein kleines geburtstagsscript eingefügt... des problem besteht darin, dass alle, die vor 1969 geboren sind, als geburtsagskinder angezeigt werden und alle 37 jahre alt sind... wo liegt der fehler im code?

    hier der code:

    <?

    setlocale(LC_ALL, "deu_deu");


    $geburtstagskinder = verarbeite_geburtstagsdatei("geburtstage.txt", 7, 14);


    if ($geburtstagskinder)
    {
    for ($f=0; $f<count($geburtstagskinder); $f++)
    {
    $val = $geburtstagskinder[$f];
    echo "Wir " . "gratulieren " . $val["name"] . " zum " . "<strong>" . $val["age"] . "</strong>" . " Geburtstag! " . "<br>";
    }
    }
    else
    echo "Heute hat niemand Geburtstag!" . "<br>";




    function verarbeite_geburtstagsdatei($datei, $zeitraum_vor, $zeitraum_danach)
    {
    $counter = 0;
    $geburtstage = file($datei);

    foreach ($geburtstage as $key => $data)
    {
    $vals = explode(":", $data);

    if (count($vals)>1)
    {
    $name = $vals[0];
    $bday = string2stamp($vals[1]);

    $date_start = mktime(0, 0, 0, date("m"), date("d"), date("Y", $bday)) - $zeitraum_vor * (1 * 60 * 60);
    $date_end = mktime(0, 0, 0, date("m"), date("d"), date("Y", $bday)) + $zeitraum_danach * (1 * 60 * 60);

    if (($bday > $date_start) && ($bday < $date_end))
    {
    $age = date("Y") - date("Y", mktime(0, 0, 0, date("m"), date("d"), date("Y", $bday)));
    $datum = strftime("%#d. %B", $bday);

    $geburtstagskinder[$counter]["name"] = $name;
    $geburtstagskinder[$counter]["age"] = $age;
    $geburtstagskinder[$counter]["datum"] = $datum;
    $geburtstagskinder[$counter]["tstamp"] = mktime(0, 0, 0, date("m", $bday), date("d", $bday));

    $counter++;
    }
    }
    }

    $geburtstagskinder = sort_array($geburtstagskinder, "tstamp");

    return $geburtstagskinder;
    }



    function string2stamp($string)
    {
    $date = explode(".", $string);
    return mktime(0, 0, 0, $date[1], $date[2], $date[0]);
    }



    function sort_array($array, $sortby, $order=1)
    {
    $arr = &$array;
    $count = 0;

    for ($f=0; $f<count($arr); $f++)
    {
    $sort[$count] = $arr[$f][$sortby];
    $count = $count + 1;
    }

    if ($order==1) @asort($sort);
    if ($order==-1) @arsort($sort);

    @reset($sort);

    $count = 0;
    while (list($key, $val)=@each($sort))
    {
    $new_arr[$count] = $arr[$key];
    $count = $count + 1;
    }
    return $new_arr;
    }
    ?>

  • #2
    Du arbeitest mit Unix-Timestamps und somit hast du ein Problem. Die Zeitrechnung dabei beginnt erst am 1.1.1970 und alles was vor diesem Datum liegt, geht damit automatisch in die Hose. Mit Hilfe der Suchfunktion und/oder google wirst du mit den Stichworten "alter berechnen" garantiert eine Lösung finden.

    Gruß
    Uwe

    PS: Benutze bitte die PHP-Tags, wenn du hier Quelltexte postest.

    Kommentar

    Lädt...
    X