Ankündigung

Einklappen
Keine Ankündigung bisher.

Alter über das angegebene Datum errechnen

Einklappen

Neue Werbung 2019

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

  • Alter über das angegebene Datum errechnen

    Hi @ all

    Ich hab meine Probleme mit diesem verdammten Script und weiss nicht wo ich den Fehler drin hab.
    Entweder kommt bei der Lösung die ich mir ausgedacht hab ein PHP-Fehler oder die Lösung zeigt manchmal ein falsches Datum an.
    Vielleicht könnt ihr mir helfen.

    Codeansatz:
    PHP-Code:
    <?php
    //umwandlung des wertes(tag/monat/jahr) in integer zum rechnen
    settype($_GET['tag'], 'integer');
    settype($_GET['monat'], 'integer');
    settype($_GET['jahr'], 'integer');
    //aktuelles datum auslesen und in ein integer umwandeln
    //damit man mit ihr rechnen kann
    $jahr date("Y");
    settype($jahr'integer');
    //vorläufig: alter über datum ausrechnen
    $alter $jahr $_GET['jahr'];
    //aktuellen tag und monat auslesen und in integer umwandeln/am ende tag und monat einfliessen lassen
    $tag date("d");
    settype($tag'integer');
    $monat date("2");
    settype($monat'integer');
    if(
    $_GET['tag'] <= $tag)
     {
     
      
    $alter--;
      
     }
    else
     {
     
      
    $alter 2;
      
     }
    if(
    $_GET['monat'] <= $monat)
     {
     
      
      
     }
    else
     {
     
      
      
     }
     
    echo 
    "$alter";
    ?>

  • #2
    $monat = date("2");
    wirds sein ....

    Ansonsten mach mal error_reporting("E_ALL")

    /edit
    Mach das ganze doch einfach per mktime() ( aus den angegebenen Werten einen timestamp formen ) und time() ( der aktuelle timestamp ), danach formatierst du den Timestamp per date();

    Kommentar


    • #3
      Zitat von PTC Beitrag anzeigen
      PHP-Code:
      $monat date("2"); 
      Wie schon erwähnt, ist dies falsch! "n" wäre der korrekte Wert.

      Zitat von PTC Beitrag anzeigen
      PHP-Code:
      if($_GET['monat'] <= $monat)
       {
       
        
        
       }
      else
       {
       
        
        
       } 
      Ähm sollte hier nicht irgendwas drin stehen???

      Zitat von PTC Beitrag anzeigen
      PHP-Code:
       echo "$alter"
      Das ist zwar nicht falsch, aber ziemlich umständlich! 1. sind einfache Anführungszeichen den doppelten vorzuziehen und zweitens reicht hier einfach ein
      PHP-Code:
      echo $alter
      Desweiteren glaube ich, dass dein Ansatz falsch ist! Hängt aber davon ab, was in der letzten if-else-Abfrage geschieht.
      Aber meiner Meinung nach ist es bescheuert, wenn man zuerst abfragt, ob der Datums-Tag kleiner ist als der heutige Tag. Diese Abfrage ist ja nur wirklich nötig, wenn der Datums-Monat identisch mit dem heutigen Monat ist. Wenn der Datums-Monat kleiner als der heutige Monat ist, stimmt die Altersberechnung mit "heutiger Monat - Datums-Monat". Wenn er kleiner ist, musst du davon 1 abziehen. Wenn es gleich ist, musst du den Tag vergleichen und entweder so lassen, wie es ist, oder eins abziehen.

      Kommentar


      • #4
        Danke an alle!!

        Werde das mal ausprobieren.

        Kommentar


        • #5
          Wenn alles nicht hilft kannst du auch das script hier verwenden das ich mal im netz gefunden habe, ist zwar nicht von mir aber funktioniert gut, vieleicht auch gerade weil er nicht von mir ist

          PHP-Code:
          if(!$row['gebdatum'] == "") {
             
          $gd explode ("."$row['gebdatum']);
             
          $heute_tag date('d');
             
          $heute_monat date('m');
             
          $heute_jahr date('Y');
             
          $tag $gd[0];
             
          $monat $gd[1];
             
          $jahr $gd[2];
             
          $alter $heute_jahr-$jahr;

                if (
          mktime(0,0,0,$heute_monat,$heute_tag,$heute_jahr) < mktime(0,0,0,$monat,$tag,$heute_jahr)) {
                   
          $alter--;
                }
          } else {
              
          $alter "0";

          die Variable row einfach durch ein datum ersetzten wie z.B. "25.04.1986".
          MFG
          DJ Nuno

          Kommentar


          • #6
            So ist natürlich einfacher!
            Wo hast du das gefunden?

            Kommentar


            • #7
              google findet man einige Beispiele.. z.b. auch:
              PHP-Code:
              <?php
              $tag 
              "01";
              $monat "05";
              $jahr "1975";

              $time mktime(0,0,0,date("m"),date("d"),date("Y")); 
              $birthday mktime(0,0,0,$monat,$tag,$jahr); 
              $alter   intval(($time $birthday) / (3600 24 365));
              ?>

              Kommentar

              Lädt...
              X