2017-04-11 80 views
0
<!DOCTYPE html> 
<html lang="en-US"> 
<head> 
    <meta charset="UTF-8"> 
    <title> Birthday </title> 

<?php 

    if(isset($_POST["birthday"])) 
     $birthday = $_POST["birthday"]; 
    else 
     $birthday = 1; 

    function calculate_age($birthday){ 

     list($day, $month , $year) = explode("/", $birthday); 
     $day_diff = date("d") - $day; 
     $month_diff = date("m") - $month; 
     $year_diff = date("Y") - $year; 
     if($month_diff < 0){ 
      $year_diff--; 
     } 
     else if(($month_diff == 0) && ($day_diff < 0)){ 
      $year_diff--; 
     } 
     else if (($month_diff == 0) && ($day_diff == 0)){ 
      echo "<script type='text/javascript'>alert('Happy 
      Birthday!!!');</script>"; 
     } 

     return $year_diff; 
     } 

     $finalBirthday=calculate_age($birthday); 

?> 

</head> 
<body> 

    <h1>Birthday Calculator</h1> 

    <form name="Birthday" method="POST" action="birthday.php"> 
     <label>What is your Birthday?</br></label> 
     <input type ="text" name = "birthday" VALUE = "DD/MM/YYYY"></br> 
     <input type ="submit" name = "submit" VALUE = "Submit"></br> 
    </form> 

<?php 

    echo "Our Birthday Calculator says you are " .$finalBirthday; 

?> 

</body> 
</html> 

我想知道爲什麼第一次運行它,它提出了「我們的生日計算器說你是2017年」。生日計算器

然而,在實際日期後,PHP工作正常。

任何幫助將不勝感激。

+0

因爲'$生日= 1;'。使用調試器或echo來查看'$ day_diff = date(「d」) - $ day;'等內容是 – Jens

+0

php'if else'語句是否正常工作?以前從未見過它。如果沒有使用大括號,我會看到它使用像'if(isset($ _ POST [「birthday」])): $ birthday = $ _POST [「birthday」];其他: $ birthday = 1; endif;'注意':'和最後的endif; –

回答

0

很好,因爲生日= 1,日= 1,月=空,年=空。

這將在一定程度上等同於你的生日是1/0/00讓你2017年老

+0

在弄亂了一些東西之後,我仍然無法修復它。任何建議? – Jsalzman

+0

查看我的擴展回答 – RichardAtHome

1

因爲第一次的代碼運行時,$生日設置爲1,然後通過該calculate_age()功能。

該函數需要以正斜槓/分隔的日期的字符串表示形式。

你沒有傳遞它期望的函數,所以它返回的是亂碼。

擴展的解決方案:除非你有一個日期,不要做計算:

$finalBirthday = false; 

if(isset($_POST["birthday"])) 
    $birthday = $_POST["birthday"]; 

    list($day, $month , $year) = explode("/", $birthday); 
    $day_diff = date("d") - $day; 
    $month_diff = date("m") - $month; 
    $year_diff = date("Y") - $year; 
    if($month_diff < 0){ 
     $year_diff--; 
    } 
    else if(($month_diff == 0) && ($day_diff < 0)){ 
     $year_diff--; 
    } 
    else if (($month_diff == 0) && ($day_diff == 0)){ 
     echo "<script type='text/javascript'>alert('Happy 
     Birthday!!!');</script>"; 
    } 

    $finalBirthday=$year_diff; 

} 

...

<?php 

    if ($finalBirthday) { 
     echo "Our Birthday Calculator says you are " .$finalBirthday; 
    } 

?> 
+0

搞亂了一些事情後,我仍然無法修復它。任何建議? – Jsalzman