Alter richtig anzeigen

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

  • Alter richtig anzeigen

    Mion,

    Folgendes Problem:
    Ich habe in der Datenbank das Alter im MySQL-Type "DATE" 0000-00-00 gespeichert, jetzt ist mein Vorhaben das mein Script das Alter anzeigt. Sowei So gut, aber alle die glaub ich unter 1970 Geboren sind, zeigt mein Script falsch an.

    Beispiel:
    Geburtsdatum: 31.12.1969
    Angezeigtes Alter: -13

    So sieht mein Script aus:
    PHP-Code:
    <?php
      $birth_date 
    $rowVerein["gebTag"]; 
      
    $today      date('Y-m-d'); 

      list(
    $birth_year$birth_month$birth_day) = explode('-'$birth_date); 
      list(
    $today_year$today_month$today_day) = explode('-'$today); 

      
    $age $today_year $birth_year
      if (
    $today_month $birth_month) { 
        
    $age--; 
      } elseif ((
    $today_month == $birth_month) AND ($today_day $birth_day)) { 
        
    $age--; 
      } 

      echo 
    $age
    ?>

  • #2
    der UNIX-Timestamps gilt erst ab den 1. Januar 1970, d.h. für Berechnungen die davor liegen, kannst du diesen nicht nutzen.

    Aber man kann ja ein wenig trixen, so zb:

    PHP-Code:

    $birth_date_J 
    substrhtmlentities$rowVerein["gebTag"]  ) , 0);  
    $birth_date_M substrhtmlentities$rowVerein["gebTag"] ), 5); 
    $birth_date_T substrhtmlentities$rowVerein["gebTag"] ), 8);

    $GD date('Y') - $birth_date_J 1;

    if( 
    date('m') > $birth_date_M ){
       
    $GD $GD 1;}

    else if( (
    date('m') == $birth_date_M ) && ( $birth_date_T <= Date('d') ) ){
       
    $GD $GD 1;}
        
    echo 
    $GD
    Das müsste funktionieren, ist aber nicht getestet.

    Kommentar


    • #3
      Re: Alter richtig anzeigen

      Wo sind deine Kontrollausgaben der verwendeten Werte?


      Wenn ich am Anfang deines Scriptes
      PHP-Code:
      $birth_date '1969-12-31'
      $today      '2006-09-17'
      fest vorgebe, erhalte ich 36 ...
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Hi, was meinst du mit Kontrollausgabe?

        Kommentar


        • #5
          Dass du mal mit echo nachschaust, ob in den Variablen, die du verwendest, auch das drinsteht, was du erwartest!
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Der erste Tip hat nicht funktioniert.

            Bei der Kontrollausgabe der Variable war ein Guter Tip, 2019-05-05.

            Kommentar


            • #7
              überprüfe der Inhalt von $rowVerein["gebTag"];
              ich bekomme auch 36 wenn ich
              $birth_date = "1969-12-31";
              mache
              Slava
              bituniverse.com

              Kommentar


              • #8
                Das war auch der Fehler, kein plan wie ich so ein DAtum in die Datenbank bekommen habe.

                Dank euch!

                Kommentar


                • #9
                  Original geschrieben von DeeJay-Luke
                  Bei der Kontrollausgabe der Variable war ein Guter Tip
                  Na schau mal an ...

                  Dann machst du so etwas bitte künftig, noch bevor du fragst.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10


                    Ich war schon mit meinem Rat am Ende, und 700 Einträge zu Prüfen wollte ich eigentlich vermeiden

                    Aber man lernt aus Fehlern

                    Kommentar


                    • #11
                      select * from tabelname where to_days(geburtstag)>to_days(now())
                      dann bekommst du wenigstens die Menschen die noch nicht geboren wurden
                      Slava
                      bituniverse.com

                      Kommentar


                      • #12
                        hehe, super muss ich gleich mal anwende.
                        Wisst Ihr zufällig wie man mit der Datenbankabfrage die Leute anzeigt, die jünger als 23 sind?

                        Kommentar


                        • #13
                          select * from tabelname where
                          to_days(geburtstag)>to_days(DATE_SUB(now(), interval 23 YEAR))
                          Slava
                          bituniverse.com

                          Kommentar


                          • #14
                            THX, aber muss nicht -1 DAY noch rein?
                            HAb ich mal irgendwo gelesen

                            Kommentar

                            Lädt...
                            X