【问题标题】:How Can I calculate age from stored date birth in mysql Table using php如何使用php从mysql表中存储的出生日期计算年龄
【发布时间】:2015-10-03 08:07:05
【问题描述】:

我有一个带有动态选择选项的表单。我想在从数据库中选择山羊后计算山羊的出生日期(以月为单位),并在动态选择选项后面的以下表单字段中回显所选山羊的年龄。 这是选择脚本:

<?php 
$conn = mysqli_connect("localhost", "root", "xxx", "xxxx");
if(mysqli_connect_errno($conn)) {
echo "Unable to connect to database server";
}

$sql = "SELECT * FROM goats WHERE sex='Male'";
$query = mysqli_query($conn, $sql);

echo '<select name="hegoat">';
echo '<option value="">Choose He Goat</option>';
while($hegoats = mysqli_fetch_assoc($query)){
echo "<option>{$hegoats['goatid']}</option>";
}
echo '</select>';
?>

数据库表是山羊,以“dob”作为出生日期列 而年龄的表单字段是:&lt;input type="text" name="age" id="age"/&gt;

而我的 PHP 代码是

<?php
if(isset($_POST['sub'])) 
{ 
    date_default_timezone_set ("Asia/Calcutta");
    $dateofreg1=date("d M Y");
    $dbd=$_POST['dob'];
    $startTimeStamp = strtotime($dbd);
    $endTimeStamp = strtotime($dateofreg1);
    $timeDiff = abs($endTimeStamp - $startTimeStamp);
    $numberDays = $timeDiff/86400;
    $numberDays = intval($numberDays);
    $days="Total day :".$numberDays;
    $birthDate =$dbd; 
    $birthDate = explode("/", $birthDate);
    $age = (date("md", date("U", mktime(0, 0, 0, $birthDate[0], $birthDate[1], $birthDate[2]))) > date("md") ? ((date("Y") - $birthDate[2]) - 1) : (date("Y") - $birthDate[2]));
    $dobs="Age is:" . $age; 
}
?>

【问题讨论】:

  • Find Month difference in php? - 这基本上就是你要问的。山羊、人或苹果——都是一样的:)
  • date_pf_birth 列的格式是什么?是日期还是时间戳?
  • 啊,所以逻辑上是在&lt;option value "" ...&gt; 中用它们各自的values 回显所有hegoats['goatid'],然后选择特定的_goatid_,调用一个JS 函数来获取_goatid_ 的值并在该函数中进行数学运算并将更新后的值返回到字段 name "age"
  • date_of_birth 列是 Varchar
  • 计算山羊的年龄很像计算任何事物的年龄。也就是说,如果您要存储日期,请存储日期,而不是字符串

标签: php mysql


【解决方案1】:

根据您的最后评论,我给出了这个答案。

 <?php if(isset($_POST['sub'])) 
    {
     date_default_timezone_set ("Asia/Calcutta");
    $dateofreg1=date("d M Y");
    $dbd=$_POST['dob'];
    $startTimeStamp = strtotime($dbd);
    $endTimeStamp = strtotime($dateofreg1);

    $year1 = date('Y', $startTimeStamp);   //select year1
    $year2 = date('Y', $endTimeStamp);    //select year 2
    $month1 = date('m', $startTimeStamp);   //month1
    $month2 = date('m', $endTimeStamp);      //month2
    $diff = (($year2 - $year1) * 12) + ($month2 - $month1);  //year*12 and month difference
     $dobs="Age is:" . $diff. "  months";
     ?>

【讨论】:

    【解决方案2】:

    计算天数的简单一行代码。

    $Days = round(abs(strtotime($dob)-strtotime($currentDate))/86400);
    

    【讨论】:

    • 除了他要找几个月,而不是几天。
    • @evert -- 阅读这个 -- 上面的代码不显示天数,只显示年数。请帮忙 – Igbeh Emmanuel 1 小时前
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-30
    • 2017-07-02
    • 1970-01-01
    相关资源
    最近更新 更多