Fabienne: Alterscheck

Hallo zusammen,

kann mir jemand sagen, wie ich am besten einen "Alterscheck" (>=18 Jahre) durchführe?

Als Angabe stehen Geburtstag, Geburtsmonat und Geburtsjahr als getrennte Vars zur Verfügung.

Gibt es in PHP so schöne Datumsfunktionen wie in SQL?

Thanx

  1. Hallo Fabienne,

    kann mir jemand sagen, wie ich am besten einen "Alterscheck" (>=18 Jahre) durchführe?

    Als Angabe stehen Geburtstag, Geburtsmonat und Geburtsjahr als getrennte Vars zur Verfügung.

    Gibt es in PHP so schöne Datumsfunktionen wie in SQL?

    $time_Geburtstag = mktime(0, 0, 0, date($Geburtsmonat), date($Geburtstag), date($Geburtsjahr));

    $time_vor18jahren = mktime(0, 0, 0, date("m"), date("d"), date("Y")-18);

    if ($time_Geburtstag <= $time_vor18jahren OR $Geburtsjahr <= 1970) {
      echo "Bin älter als 18 Jahre  ;-)";
    }

    Der Zeitvergleich funktioniert aber nur sicher für Geburtstage _nach_ dem "January 1 1970". Du mußt also noch zusätzlich prüfen, ob das Geburtsjahr nicht kleiner als als 1970 ist. Da dir das Geburtsjahr eh' schon vorliegt dürfte das aber kein Problem darstellen, daher das OR.

    Grüsse
    Frankie

    1. Hallo Frankie,

      $time_Geburtstag = mktime(0, 0, 0, date($Geburtsmonat), date($Geburtstag), date($Geburtsjahr));

      $time_vor18jahren = mktime(0, 0, 0, date("m"), date("d"), date("Y")-18);

      if ($time_Geburtstag <= $time_vor18jahren OR $Geburtsjahr <= 1970) {
        echo "Bin älter als 18 Jahre  ;-)";
      }

      Für was braucht man die date()-Funktion? Die mktime()-Timefunktion erwarten doch nur INT-Werte für m,d und Y, oder?

      Danke!
      Fab

      1. Hallo Frankie,

        $time_Geburtstag = mktime(0, 0, 0, date($Geburtsmonat), date($Geburtstag), date($Geburtsjahr));

        Für was braucht man die date()-Funktion? Die mktime()-Timefunktion erwarten doch nur INT-Werte für m,d und Y, oder?

        Nachtrag:
        Meine natürlich die date-Funktion beim "Geburtstag"!

        Grüße

      2. Hallo Fabienne,

        Für was braucht man die date()-Funktion? Die mktime()-Timefunktion erwarten doch nur INT-Werte für m,d und Y, oder?

        Du hast recht, war ein Kopierfehler, date() braucht man in diesem Fall natürlich nur um auf das heutige Datum zurückgreifen zu können. Sorry.

        $time_Geburtstag = mktime(0, 0, 0, date($Geburtsmonat), date($Geburtstag), date($Geburtsjahr));

        muß heissen:

        $time_Geburtstag = mktime(0, 0, 0, $Geburtsmonat, $Geburtstag, $Geburtsjahr);

        $time_vor18jahren = mktime(0, 0, 0, date("m"), date("d"), date("Y")-18);

        Hier braucht man date().

        Grüsse
        Frankie