在PHP中将用户输入日期html输入转换为年龄

I'm trying to get the date from the date-time-picker name="dob" into the php but it only post 2017 in the database user_age column. However, if I assigned $dob manually to $dob = '10/09/1988' it works.

<div class="form-group date-time-picker label-floating is-empty">
 <label class="control-label">Birthday</label>
 <input name="datetimepicker">
</div>

And here is the php

<?php
 $dob = $_GET['datetimepicker'];
 $dob = explode("/", $dob);
 $agv = (date("md", date("U", mktime(0, 0, 0, $dob[0], $dob[1], $dob[2]))) > 
 date("md") ? ((date("Y") - $dob[2]) -1) : (date("Y") - $dob[2]));

 $age = mysqli_real_escape_string($conn, $agv);
?>
douershuang7356
douershuang7356 现在,当我将两种方法都改为POST时,它可以工作。谢谢,非常感谢。
2 年多之前 回复
donglu6303
donglu6303 是的,主要形式是使用GET方法
2 年多之前 回复
dongxie2756
dongxie2756 您是否使用method=“GET”提交表单?如果method=“POST”,表单数据将在$_POST数组中。
2 年多之前 回复
dongxie559554
dongxie559554 我编辑了那个。我对datetimepicker的输出有第二个疑问。你会帮我发帖作为文本以某种方式仔细检查吗?
2 年多之前 回复
dongmi1941
dongmi1941 因为现在价值在$_GET[-datetimepicker]中
2 年多之前 回复
donglin1692
donglin1692 我更改了它,现在它指的是name=“datetimepicker'但是我的数据库与2017年的代码相同,我的代码和00代码如下
2 年多之前 回复
dtrotfd1012
dtrotfd1012 谢谢你的说明我把它改成了id
2 年多之前 回复
dsxcv5652
dsxcv5652 你有1个输入字段。它有2个“名称”属性。这不是合法的HTML。难怪PHP不知道$_GET['dob']中有什么。
2 年多之前 回复
dtx9763
dtx9763 我的意思是它指的是带有name=“dob”值的<input>并拉取用户插入的数据。对不起,如果我不明白你评论的目的。
2 年多之前 回复
doufei1893
doufei1893 您输入了两个名称属性。datetimepicker可能应该去其他地方,可能是type(astype=“date”)或class
2 年多之前 回复
dongliantong3229
dongliantong3229 jcorry的答案是正确的,假设您有一个mm/dd/yyyy格式的有效日期(或文档中认为可接受的任何其他格式:php.net/manual/en/datetime.formats.date.php)
2 年多之前 回复
dongxu198714
dongxu198714 应该做,还是确实做到了?很大的区别。你可以非常直接地测试它
2 年多之前 回复
duanbu4962
duanbu4962 我真的不在乎它应该做什么,我想知道它包含的内容。
2 年多之前 回复
dongshao8566
dongshao8566 它应该使用格式MM/DD/YYYY在上面的div中拉取datetimepicker的值。
2 年多之前 回复
donglikuang8145
donglikuang8145 PHP中出生日期计算年龄的可能重复
2 年多之前 回复
douchuopiao9002
douchuopiao9002 $_GET['dob']的确切内容是什么?
2 年多之前 回复
doushi6864
doushi6864 根据datetimepicker的js,格式为MM/DD/YYYY
2 年多之前 回复
dongya9904
dongya9904 从datepicker提交的日期是什么格式?日/月/年?毫米/日/年?别的什么?您如何在服务器中验证日期格式是否有效和预期?
2 年多之前 回复

1个回答

I think the problem is to get a DOB, subtract that from the date of now and present the difference in years, right?

That seems like a problem for DateTime::diff

$dob = new DateTime($_GET['dob']); // we'll just assume this is a safe date value for now
$now = new DateTime();

$age = $dob->diff($now);

$ageInYears = $age->format('%Y');
dongqian3750
dongqian3750 是的我确实在PHP中更改了它并确保所有变量连接但是数学或datetimepicker输出有问题
2 年多之前 回复
douquan1953
douquan1953 我看到你更新了你的问题。 尝试这个答案,但改为使用$ _GET ['datetimepicker']。 如果更改客户端上的字段名称(即HTML表单),则必须在服务器上更改它。
2 年多之前 回复
douche1913
douche1913 谢谢,无论我选择的日期是什么,它现在都返回00。
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问