[Funktion] Alterberechnung

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

  • [Funktion] Alterberechnung

    Hallo Leutz,

    hab nen folgendes Problem ... (ich brauch einfach diskussionen, dass hilft einfach weiter)

    hab nen tabelle mit drei spalten bestehend aus einfachen zahlenwerten (tag, monat und jahr) *ernsthaft*

    nun möcht ich den Alterberechnungen haben von allen Einträgen.

    ist das code richtig? obwohl es nicht so ganz funzt.

    SELECT
    CAST(
    CAST(jahr AS CHAR(4)) +
    REPLACE(STR(monat,2),' ',0) +
    REPLACE(STR(tag,2),' ',0)
    AS DATETIME) as Datum from date

    oder einfacher

    SELECT
    CAST(
    STR(jahr*10000+monat*100+tag)
    AS DATETIME) as Datum from Date

    brauche hilfe um das auszurechnen wie alt er ist ... danke.

    gruss tino

  • #2
    diskusionseröffnung:

    warum nutzt du dazu nicht DATE oder DATETIME fleder?
    dann kannst das datum in einem feld speichern und und mit NOW() hast das aktuelle datum.
    jetzt mußt nur noch NOW() - Datumsfeld rechnen..

    das geht mit mysql super, hab baer jetzt nicht gerade die datumsfunktionen zur hand also... googlen

    Kommentar


    • #3
      http://dev.mysql.com/doc/refman/5.0/...ction_datediff

      dann halt noch von Tagen in das was man will umrechnen....

      Feldtyp = date/datetime !

      Kommentar


      • #4
        nein, nein, der junge mann darf nichts an der tabelle verändern...

        Kommentar


        • #5
          ungetestet:

          Code:
          CAST(CONCAT(jahr, '-', monat, '-', tag) AS date)
          auch wenn ich das völlig sinnfrei finde

          Kommentar


          • #6
            wenn du tag, monat und jahr in extra spalten hast kannst du doch deine query machen und dann folgendes tun
            PHP-Code:
            # wenn das dein variablen für tag, monat und jahr sind
            # $tag , $monat , $jahr
            $heute_tag=date("d");
            $heute_monat=date("m");
            $heute_jahr=date("Y");
            $alter=$heute_jahr-$jahr;
            if (
            mktime(0,0,0,$heute_monat,$heute_tag,$heute_jahr) < mktime(0,0,0,$monat,$tag,$heute_jahr))
            {
            $alter--;
            }
            # und wenn du gleich das errechnete alter für jeden in die db speicherst 
            # mußt de nur noch das alter auslesen und nicht jedesmal rechnen 
            das sollte doch gehen wenn ich nicht irre
            selfmade-webdesign
            webdesign leipzig

            Kommentar


            • #7
              hab das so eingefügt ...

              PHP-Code:
              # wenn das dein variablen für tag, monat und jahr sind
              # $tag , $monat , $jahr
                              
              $heute_tag date("d");
              $heute_monat date("m");
              $heute_jahr date("Y");
              $alter $heute_jahr-$jahr;
              if (
              mktime(0,0,0,$heute_monat,$heute_tag,$heute_jahr) < mktime(0,0,0,$monat,$tag,$heute_jahr))
              {
              $alter--;
              }
              # und wenn du gleich das errechnete alter für jeden in die db speicherst 
              # mußt du nur noch das alter auslesen und nicht jedesmal rechnen 
              jedoch erscheint so ein fehlermeldung...

              Notice: Undefined variable: jahr in /home/nba295/public_html/Tino/index3.php on line 235

              Notice: Undefined variable: monat in /home/nba295/public_html/Tino/index3.php on line 236

              Notice: Undefined variable: tag in /home/nba295/public_html/Tino/index3.php on line 236
              es wurde jedoch berechnet, aber es erscheint bei allen "2007 Jahre alt"

              was konnte das nur sein? würde mich auf schnelle hilfe freuen. gruss tino

              Kommentar


              • #8
                Original geschrieben von tino
                jedoch erscheint so ein fehlermeldung...
                Na die Variablen, auf die du da zugreifen willst, existieren gar nicht ...
                würde mich auf schnelle hilfe freuen.
                Gewöhn' dir das doch bitte mal ab ... und schnapp du dir lieber mal "schnell" ein gutes Buch oder Grundlagen-Tutorial ...
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  Na die Variablen, auf die du da zugreifen willst, existieren gar nicht ...
                  na und ob existieren variablen ....
                  Zuletzt geändert von tino; 05.06.2007, 23:57.

                  Kommentar


                  • #10
                    Original geschrieben von tino
                    na und ob existieren variablen ....
                    OMFG ...

                    Wenn du alles besser weisst, als a) Leute mit etwas mehr Erfahrung als du, und b) sogar der PHP-Interpreter selber - dann such dir doch bitte einen anderen Platz, wo du Leuten auf den Geist gehen kannst.
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      boah ... was ist denn hier los?

                      da sind welche leutz die hier
                      und der rest ... mit denen ich gehen kann...

                      man man man..

                      LÖSUNG:

                      die variablen müssen definiert werden...

                      und es hat geklappt. danke nochmals

                      ALTERANGABE konnte auch angezeigt werden.
                      Zuletzt geändert von tino; 05.06.2007, 23:58.

                      Kommentar


                      • #12
                        Original geschrieben von brauni54
                        wenn du tag, monat und jahr in extra spalten hast kannst du doch deine query machen und dann folgendes tun
                        PHP-Code:
                        # wenn das dein variablen für tag, monat und jahr sind
                        # $tag , $monat , $jahr
                        $heute_tag=date("d");
                        $heute_monat=date("m");
                        $heute_jahr=date("Y");
                        $alter=$heute_jahr-$jahr;
                        if (
                        mktime(0,0,0,$heute_monat,$heute_tag,$heute_jahr) < mktime(0,0,0,$monat,$tag,$heute_jahr))
                        {
                        $alter--;
                        }
                        # und wenn du gleich das errechnete alter für jeden in die db speicherst 
                        # mußt de nur noch das alter auslesen und nicht jedesmal rechnen 
                        das sollte doch gehen wenn ich nicht irre
                        $jahr_heut -$jahr???

                        was soll der mist denn? wenn die person nun aber noch nicht geburtstag hatte was dann? dann macht man die einfach ein jahr älter????
                        also ich fänd fas nicht gut! da ich erst ende des jahres geburtstag hab würde ich schon im januar als ein jahr älter gelten...

                        ach und wer in der richtung googelt und scriptbeispiele mit dem unix-timestamp findet... der ist auch aufm holzweg! der Timestamp beachtet keine schaltjahre und was is wenn der probant vor 1970 geboren ist?

                        also schon die jahre monate und tage in der DB ausrechen oder im php schön über if vergleiche. anders gehts nicht!

                        Kommentar


                        • #13
                          was soll der mist denn? wenn die person nun aber noch nicht geburtstag hatte was dann? dann macht man die einfach ein jahr älter????
                          du musst schon richtig lesen!
                          PHP-Code:
                          if (mktime(0,0,0,$heute_monat,$heute_tag,$heute_jahr) < mktime(0,0,0,$monat,$tag,$heute_jahr))
                          {
                          $alter--;
                          }
                          # wenn dein user in diesem jahr noch nicht geburtstag hatte dann
                          # $alter--; -> sprich alter minus 1 und scon ist alles io 
                          in meinem skript haben auch leute vor 1970 birthday und es wird alles richtig gerechnet
                          vielleicht solltest du erst testen!
                          warum brauchst du das schaltjahr? wenn jemand am 29.02 geb. hat, dann feiert er trotzdem jedes jahr und nicht nur alle 4 jahre! also ist das in der berechnung völlig irrelevant

                          außerdem kannst du mit
                          PHP-Code:
                          if (!checkdate($monat$tag$jahr))
                          {
                          echo(
                          "Dein Geburtsdatum ist nicht korrekt eingegeben!<br>");

                          scon bei der eingabe prüfen ob das datum überhaupt eins ist, da werden auch schaltjahre berücksichtigt siehe checkdate
                          selfmade-webdesign
                          webdesign leipzig

                          Kommentar


                          • #14
                            Hallo!

                            Ich hab da mal was probiert...
                            Vielleicht hilft dir dieser Code weiter.

                            PHP-Code:
                            function alter($date) {

                            list(
                            $tag$monat$jahr) = explode('.'$date);

                            if(
                            $jahr <= date('y')) {
                            $jahr += 2000;
                            } elseif(
                            $jahr 100) {
                            $jahr += 1900;
                            }

                            $alt date('Y') - $jahr;


                            if((
                            $monat date('m')) || (($monat == date('m')) && ($tag date('d')))) {
                            $alt--;
                            }

                            return 
                            $alt;
                            }

                            $geb '10.07.1989';

                            // Ausgabe 17
                            echo alter($geb); 
                            Gruß, Flo

                            Kommentar


                            • #15
                              geholfen hat es dem tino ja schon
                              viele wege führen nach rom
                              selfmade-webdesign
                              webdesign leipzig

                              Kommentar

                              Lädt...
                              X