Nach Alter suchen über Geburtsdatum..

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

  • Nach Alter suchen über Geburtsdatum..

    Hallo allerseits,

    als erstes wünsche ich euch allen mal frohe Ostern !!!

    Jetzt bin ich gerade mal bei einem suchformular und stehe vor folgendem Problem: Ich will gerne User u.a nach ihrem alter suchen also z.B alle zwischen 24 und 25 Jahren. Nun hab ich in der Datenbank nicht das alter sondern das Geburtsdatum gespeichert. Nun hab ich keine Ahnung, wie ich danach suchen soll und ob das überhaupt möglich ist. Denn wenn ich einfach das Alter in nen Geburtsjahr umrechne und es gerade Juni ist werden ja alle, die erst später im Jahr Geburtstag haben gefunden, obwohl sie noch gar nicht das alter haben.

    Also im Prinzip müsste man ja quasi das aktuelle Datum nehmen und sich danach richten welches Geburtdatum welchem Alter entspricht... aber wie man das realisieren soll hab ich gerade noch nichtmal ne Idee für einen Ansatz *g*...
    Ich könnte natürlich auch wenn die user ihr Geburtsdatum eingeben gleich ne Spalte mit ihrem Alter anlegen, diese müsste sich ja dann aber immer aktualisieren, sobald die Geburtstag haben.. das ist irgendwie sehr unpraktisch. Dann könnte ich natürlich einfach "between" benutzen

    Aber vielleicht kann man die Suche ja auch über die Geburtsdaten realisieren, wenn man genug Ahnung hat... Also für Vorschläge, Anregungen oder sogar Lösungen wär ich mehr als dankbar!

    Achja, meine derzeitige suche-query (bis jetzt ohne Alter) ist folgende, da sollte das mit dem Alter dann irgendwie rein:

    PHP-Code:
    $sql "SELECT username, user_id, regdate, photoexist, online, user_plz, gender 
        FROM " 
    USERS_TABLE "
        WHERE user_id <> " 
    ANONYMOUS " AND $where 
        ORDER BY 
    $order_by"
    Wobei "$where" einfach nur blabla like blabla and blabla.. etc. ist, hab halt vorher nur geprüft, ob die felder leer sind um dann leere felder in der Suche auszulassen... und $order_by ist halt, ob nach eintragsdatum, namen oder plz.. etc sortiert werden soll..

    Also danke euch und noch ein schönen Feiertag!

  • #2
    Du musst Dir schon ne Funktion getAlter schrieben,
    kleiner tip: mktime() ...
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      mhh mit mktime() wird es nicht gehen, da es auf vielen Servern kein Datum vor 1970 unterstützt.. und manche sind nunmal so alt.. *g*

      Aber wenn ich mir ne funktion mache (was ich denke ich noch hinbekomme ), die mir aus dem Geburtsdatum das alter berechnet was mach ich dann mit der?!

      Hab heute Migräne vielleicht liegt es schon auf der Hand und ich bin gerade nur zu doof es zu erkennen.. ich bitte um Nachsicht

      Kommentar


      • #4
        OffTopic:
        Ach ja hab davon gehört, dass es so alte Menschen geben soll...
        :-)
        Beantworte nie Threads mit mehr als 15 followups...
        Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

        Kommentar


        • #5
          Aber im Ernst mktime benutze dazu, herauszufinden ob der diesjährige Geburtstag vor oder nach heute liegt, jenachdem kannst Du zum jahr
          (Jahr(heute)-Jahr(gebDae)) eins abziehen oder so lassen...
          :-)
          Ach und der Funktion gibst Du Dein Datum @return alterInJahren
          Beantworte nie Threads mit mehr als 15 followups...
          Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

          Kommentar


          • #6
            mh, aber ich will doch suchen nach alter von bis. Soll ich dann erst alle Geburtsdaten aus der db auslesen und dann mit der funktion die selektieren, die passen oder wie?!!!

            Also ich hatte mir in der zwischenzeit sowas hier überlegt (ohne Funktion):

            PHP-Code:
            if (!empty($HTTP_POST_VARS['age1']..blabla
            {
                
            $search_age_1 strftime ("%Y%m%d",mktime(000date("m"), date("d"), date("Y")-$age1));
                
            $search_age_2 strftime ("%Y%m%d",mktime(000date("m"), date("d")-1date("Y")-$age2-1));

            Sprich dann würde ich bein einer angabe von z.B. im Alter von 19 bis 19 und unserem heutigen Datum alle Geburtstage zwischen dem 19.4.1983 - 20.4.1984 und das wären alle, die 19 sind oder?!

            Und dann kann ich doch einfach in der query BETWEEN $search_age_1 AND $search_age_2 machen oder nicht?!

            Mh, naja, aber sowieso egal, weil ich mit dieser Methode auf das "1970er-Problem" stosse... wenn ich dann nach jemandem über 33 suche klappt das ganze nicht mehr..

            So ich bastel mir mal erstmal eben schnell sone Funktion, wie MelloPie sagt.. was auch immer ich damit machen soll *g*....

            Kommentar


            • #7
              was spricht gegen das hier?
              Code:
              SELECT 
                id, 
                geburtsdatum,
                DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW()) - TO_DAYS(geburtsdatum)), '%Y') 'Alter' FROM tabelle
              HAVING DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW()) - TO_DAYS(geburtsdatum)) ,'%Y') = 19
              Ich denke, also bin ich. - Einige sind trotzdem...

              Kommentar


              • #8
                Oder vielleicht einfach sowas:

                Code:
                SELECT name, geboren
                  FROM personen
                 WHERE geboren <= CURDATE() - INTERVAL $mindestalter YEAR
                   AND geboren >= CURDATE() - INTERVAL $maximalalter YEAR
                carpe noctem

                [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                Kommentar


                • #9
                  Original geschrieben von mrhappiness
                  was spricht gegen das hier?
                  Code:
                  SELECT 
                    id, 
                    geburtsdatum,
                    DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW()) - TO_DAYS(geburtsdatum)), '%Y') 'Alter' FROM tabelle
                  HAVING DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW()) - TO_DAYS(geburtsdatum)) ,'%Y') = 19
                  Das is gut, ich hab mal ne Funktion geschrieben, weil ich kein sql gefunden hab, allerdings würde ich um das DATE_FORMATE noch ein TRUNCATE machen...
                  THX
                  Beantworte nie Threads mit mehr als 15 followups...
                  Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                  Kommentar


                  • #10
                    danke, aber warum das truncate?

                    is das performanter als das implizite konvertieren in einen int? dürfte doch eigentlich nicht sein, weil da ja auch ne konvertierungen in int erfolgt bevor truncate läuft oder?

                    ach gott, is das alles kompliziert hier
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Kommentar


                    • #11
                      dachte nur ich mach das gleich noch im sql...
                      Beantworte nie Threads mit mehr als 15 followups...
                      Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                      Kommentar


                      • #12
                        ach du meinst für die ausgabe?

                        dachte du redest vom vergleich mit einem bestimmten alter
                        Ich denke, also bin ich. - Einige sind trotzdem...

                        Kommentar


                        • #13
                          Hi,

                          ja so hab ich mir das doch vorgestellt

                          War auf Reisen und kann euch daher erst jetzt danken:

                          Thx @ll *g*

                          Kommentar


                          • #14
                            [FONT=arial] Hallo zusammen, [/FONT]

                            Hier nun mein erster Beitrag in diesem Forum.

                            --> Xenon ich hoffe das hilft Dir auch weiter:
                            PHP-Code:

                            SELECT ID
                            ,name,vorname
                            date_format(geburtsdatum,'%d.%m.%Y') as "Geboren am:"
                            date_format(current_date,'%d.%m.%Y') as "Heute",

                            (
                            YEAR(CURRENT_DATE)-YEAR(geburtsdatum))  - (RIGHT(CURRENT_DATE,5)<RIGHT(geburtsdatum,5))  as "Alter" 

                            FROM personen  

                            order by Geburtsdatum Desc 

                            Nun habe ich bei der Ausgabe in der Alias-Spalte das richtige Alter.

                            Wer kann mir helfen in diesem Select eine Bedingung zu formulieren
                            in der das Ergebnis in der "Alter" Spalte überprüft wird als:
                            zb. nicht jünger als 18 und nicht älter als 30

                            Für eine Antwort wäre ich euch dankbar !! ps .. ich benutze Mysql als DBMS

                            .. Uwe
                            --------------------------------------------------------------------------
                            Gone are the days when you could say "Those were the days."
                            --------------------------------------------------------------------------

                            Kommentar


                            • #15
                              Code:
                              SELECT 
                                id, 
                                geburtsdatum,
                                DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW()) - TO_DAYS(geburtsdatum)), '%Y') 'Alter' 
                              FROM tabelle
                              HAVING 
                              DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW()) - TO_DAYS(geburtsdatum)) ,'%Y') >=18
                              AND
                              DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW()) - TO_DAYS(geburtsdatum)) ,'%Y') <=30
                              so?
                              Ich denke, also bin ich. - Einige sind trotzdem...

                              Kommentar

                              Lädt...
                              X