2016-12-20 4 views
1

Wie Alter mit dieser Formel oder setzen diese Formel auf meine Codierung berechnen:PHP berechnet Alter mit Datetime :: diff

$birthday = "1992-05-22"; 

$biday = new DateTime($birthday); 
$today = new DateTime(); 

$diff = $today->diff($biday); 

echo "BIRTHDAY: ". date('d M Y', strtotime($birthday)) .'<br />'; 
echo "AGE: ". $diff->y ." YO"; 

Wenn meine new DateTime($birthday) ich von Input-Methode erhalten, hier meine Codierung ist:

<form name="form1" method="post" action=""> 
BDAY:<?php 
echo "<select name='date'>"; 
echo "<option selected='selected'>date</option>"; 
for($a=1; $a<=31; $a+=1) 
{ 
    echo"<option value=$a> $a </option>"; 
} 
echo "</select>"; 

echo "<select name='month'>"; 
echo "<option selected='selected'>month</option>"; 
$month=array("Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"); 
$jlh_month=count($month); 
for($c=0; $c<$jlh_bln; $c+=1) 
{ 
    echo"<option value=$month[$c]> $month[$c] </option>"; 
} 
echo "</select>"; 

$now=date('Y'); 
echo "<select name='year'>"; 
echo "<option selected='selected'>year</option>"; 
for ($a=1990;$a<=$now;$a++) 
{ 
    echo "<option value='$a'>$a</option>"; 
} 
echo "</select>"; 
?> 
</p> <p>AGE :</label> <input type="text" name="age" id="age" value="(AGE HERE)" readonly></p> 

und ich möchte ohne Absenden-Button Alter auf die AGE-Textfeld angezeigt werden soll.

+0

Mit was genau hast du Probleme? Wenn Sie das Formular abschicken/die Seite aktualisieren, wenn der Benutzer Daten eingibt, müssen Sie in ajax schauen. – jeroen

+1

Sie können den Ajax auf Unschärfe verwenden, wenn Sie diese Berechnung möchten, ohne die Schaltfläche zu senden. –

+0

Wenn Sie das Alter mit PHP berechnen, dann müssen Sie AJAX verwenden. Sie können auch Age in Javascript verwenden, um das onchange-Ereignis aufzurufen, um Ihre JS-Funktion aufzurufen. –

Antwort

0

als, statt Verwendung Ajax .... das ist wirklich etwas, quick and dirty Lösung ... so sollten Sie diese anzupassen und zu verbessern ..

//getBirtday.php 
<?php 

$age = ""; 
$data = $_POST['birthday']; 
if(!empty($data)){ 
    $birthday = $data['year'].'-'.$data['month'].'-'.$data['date']; 
    $biday = new DateTime($birthday); 
    $today = new DateTime(); 
    $diff = $today->diff($biday); 
    $age = $diff->y; 
} 
echo $age; 
?> 


//test.php (get sure your jquery is loaded....) 

<script> 
$(document).ready(function(){ 

    $('#year').on("change", function(){ 

     birthday["date"] = $("#day").val(); 
     birthday["month"] = $("#month").val(); 
     birthday["year"] = $("#year").val(); 

     $.ajax({    
       url: 'getBirthday.php', 
       method: "POST", 
       data: {birthday:birthday}, 
       error: function(error) { 
        alert("ERROR"+error); 
       },    
       success: function(data) { 
        $("#age").val(data); 
       } 
     });  
    });  
}); 

</script> 


</p> <p>AGE :</label> <input type="text" name="age" id="age" value="<?=$age?>" readonly></p> 

<form name="form1" method="post" action="#">  
    BDAY:<?php 
    echo "<select name='date' id='day'>"; 
    echo "<option selected='selected'>date</option>"; 
    for($a=1; $a<=31; $a+=1) 
    { 
     echo"<option value=$a> $a </option>"; 
    } 
    echo "</select>"; 

    echo "<select name='month' id='month'>"; 
    echo "<option selected='selected'>month</option>"; 
    $month=array(1=> "Januari",2 => "Februari", 3=> "Maret", 4=> "April", 5=> "Mei", 6=> "Juni", 7=>"Juli", 8=> "Agustus", 9=> "September", 10=>"Oktober",11=>"November",12=>"Desember"); 
    for($c=0; $c<count($month); $c++) 
    { 
     echo "<option value=$c> $month[$c] </option>"; 
    } 
    echo "</select>"; 

    $now=date('Y'); 
    echo "<select name='year' id='year'>"; 
    echo "<option selected='selected'>year</option>"; 
    for ($a=1990;$a<=$now;$a++) 
    { 
     echo "<option value='$a'>$a</option>"; 
    } 
    echo "</select>"; 
    ?> 

</form> 
+0

Danke @Christian Felix das ist, was Iam sucht :) –

+0

Sorry, aber ich will das Alter sehen, ohne submit buttot zu sehen. ? –

+0

@Nacht Stute, ist die obige Lösung angemessen? –

0
     $("#calcCep").click(function(){ 

          $.post("calc_frete.php", { ----> send to page php 
           age: $("#fieldage").val() 
          }, 
          function(data, status) { 
           $("#freteValores").html(data); ---> Put in any field or DIV 
          }); 
         }); 

ein wenig von Ajax

+0

ich habe kein problem bei der berechnung von alter mit ajax oder java, aber ich kann das nicht mit php machen, also bin ich neugierig darauf, auch für meine Kodierung Aufgabe :) @Ewerton Dutra –