【发布时间】: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”作为出生日期列
而年龄的表单字段是:<input type="text" name="age" id="age"/>
而我的 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 列的格式是什么?是日期还是时间戳?
-
啊,所以逻辑上是在
<option value "" ...>中用它们各自的values回显所有hegoats['goatid'],然后选择特定的_goatid_,调用一个JS 函数来获取_goatid_的值并在该函数中进行数学运算并将更新后的值返回到字段name "age" -
date_of_birth 列是 Varchar
-
计算山羊的年龄很像计算任何事物的年龄。也就是说,如果您要存储日期,请存储日期,而不是字符串