2016-12-20 21 views
1

PHPを計算年齢:: 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"; 

私はここで、インプットメソッドから取得する私の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> 

私は年齢を送信ボタンなしでAGEテキストフィールドに表示します。

+0

何が問題になっていますか?ユーザーがデータを入力したときにフォームを送信する/ページを更新する場合は、ajaxを調べる必要があります。 – jeroen

+1

ボタンを送信せずにこの計算を行う場合は、ぼかしでajaxを使用できます。 –

+0

PHPで年齢を計算する場合、AJAXを使用する必要があります。 Javascriptでonageイベントを使用してJS関数を呼び出すこともできます。 –

答えて

0

の少しは...ので、あなたがこれを適応し、改善する必要があります。..

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

これは私が探しているものです:) @ –

+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でそれを行うことはできませんので、私のコーディングタスクのためにもそれで好奇心が強いです:) @エヴァートンDutra –

関連する問題