2016-12-20 75 views
1

如何計算年齡與這個公式或者把這個配方給我的編碼:PHP計算年齡的DateTime ::差異

$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"; 

如果我new DateTime($birthday)我從輸入法得到的,這裏是我的編碼:

<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> 

而且我想在沒有提交按鈕的情況下在年齡文本字段上顯示年齡。

+0

你到底有什麼問題?如果用戶在輸入數據時提交表單/更新頁面,則需要查看ajax。 – jeroen

+1

如果你想在沒有提交按鈕的情況下進行計算,你可以使用模糊ajax。 –

+0

如果你是通過PHP計算年齡,那麼你必須使用AJAX。你也可以在JavaScript中使用onchange事件來計算年齡來調用你的JS函數。 –

回答

0

比,使用AJAX,而不是....這確實是一些快速和骯髒的解決方案...所以你要適應和改善這個..

//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

謝謝@Christian菲利克斯這是什麼iam尋找:) –

+0

對不起,但我想看到年齡沒有提交buttot。 ? –

+0

@Night Mare,上述解決方案是否足夠? –

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 
          }); 
         }); 

一點ajax的

+0

當用ajax或java計算年齡時,我沒有問題,但我不能這樣做與PHP,所以我很好奇,也爲我的編碼任務:) @Ewerton Dutra –