Marcel: PHP: Suche nach Alter über Geburtsdatum realisieren

Hallo!

Ich wollte für meine Website eine Suche Programmieren und den Usern die Möglichkeit geben auch User nach Alter zu Suchen. In meiner DB ist nicht das Alter sondern das Geburtsdatum im Format TT.MM.JJJJ Gespeichert. Denn wenn ich das Alter in der DB hätte müsste jedes Mitglied sein Alter jedes Jahr Updaten. Wäre ja schwachsinn.

Also, gibt es ein möglichkeit solch eine Suche zu Realisieren?

Für Vorschläge, Anregungen oder sogar Lösungen wär ich mehr als dankbar! Schonmal Danke im Voraus!

Frohe Weihnachten,
Patrick

  1. Hallo!

    Ich wollte für meine Website eine Suche Programmieren und den Usern die Möglichkeit geben auch User nach Alter zu Suchen. In meiner DB ist nicht das Alter sondern das Geburtsdatum im Format TT.MM.JJJJ Gespeichert. Denn wenn ich das Alter in der DB hätte müsste jedes Mitglied sein Alter jedes Jahr Updaten. Wäre ja schwachsinn.

    Also, gibt es ein möglichkeit solch eine Suche zu Realisieren?

    Dieser Thread könnte dich interessieren:

    https://forum.selfhtml.org/?t=97269&m=591900

    Für Vorschläge, Anregungen oder sogar Lösungen wär ich mehr als dankbar! Schonmal Danke im Voraus!

    Bitte.

    Frohe Weihnachten,

    Ebenfalls.

    Grüsse
    Frankie

  2. Ich wollte für meine Website eine Suche Programmieren und den Usern die Möglichkeit geben auch User nach Alter zu Suchen. In meiner DB ist nicht das Alter sondern das Geburtsdatum im Format TT.MM.JJJJ Gespeichert. Denn wenn ich das Alter in der DB hätte müsste jedes Mitglied sein Alter jedes Jahr Updaten. Wäre ja schwachsinn.

    Also, gibt es ein möglichkeit solch eine Suche zu Realisieren?

    Klar, sogar ziemlich einfach, vorausgesetzt, die Besucher sind nach 1970 geboren, was passiert wenn sie vorher geboren sind weiss ich nicht, könnte sein, dass es trotzdem geht :).

    du machst zuerst aus dem Geburtsdatum einen timestamp, per mktime();

    dann tust du einfach den aktuellen timestamp (per time();) nehmen und den geburtstagstimestamp davon abziehen.
    dann haste das alter in sekunden.
    daraus kannst du dann das alter errechnen.
    das ganze könnte so aussehen:

    $alter = floor(round(time()-mktime("","","","monat","tag","jahr"))/round(365*3+366)/4/24/60/60);

    ist ungeprüft und wäre sicher einfacher gegangen, aber ich bin jetzt zu müde um noch zu denken ;)

    ausserdem ist es nicht ganz genau, da es damit rechnet, dass jedes jahr 365,25 tage hat, was so ja auch nicht _ganz_stimmt ;)

    eine andere möglichkeit wäre:

    du zählst vom geburtsjahr an die jahre bis zum aktuellen jahr und prüfst dann ob der geburtstag dieses jahr schon war.

    aber dazu schreib ich dir jetzt keinen code - bin wie gesagt zu müde :P

    1. ich sag ja ich bin müde ;)

      $alter = floor(round(time()-mktime("","","","monat","tag","jahr"))/round(365*3+366)/4/24/60/60);

      ist quatsch.
      so muss es sein:

      $alter = floor(round(time()-mktime("","","","monat","tag","jahr"))/round(365*3+366,2)/4/24/60/60);

      müsste...

  3. Ich wollte für meine Website eine Suche Programmieren und den Usern die Möglichkeit geben auch User nach Alter zu Suchen. In meiner DB ist nicht das Alter sondern das Geburtsdatum im Format TT.MM.JJJJ Gespeichert. Denn wenn ich das Alter in der DB hätte müsste jedes Mitglied sein Alter jedes Jahr Updaten. Wäre ja schwachsinn.

    Also, gibt es ein möglichkeit solch eine Suche zu Realisieren?

    Du suchst period_diff

    Dazu musst du aber dein Format erst umwandeln. Die abfrage sieht dfann ungefähr so aus:

    SELECT * from xxx WHERE
    PERIOD_DIFF( DATE_FORMAT('datum','%Y%m'), DATE_FORMAT( NOW() ,'%Y%m') ) == '???'

    Die ??? sind das Alter in Monaten.

    Struppi.