You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

禁用HTML日期输入框后插入MySQL出现1970-01-01问题求助

问题原因

HTML中被禁用(disabled)的表单元素不会随表单提交到服务器,所以当你用JS将datai输入框设为disabled后,服务器端的$_POST['datai']根本不存在。strtotime()处理不存在的值会返回false,date('Y-m-d', false)会默认输出1970-01-01,这就是你遇到的核心问题。

而你移除date和strtotime后出现索引错误,是因为直接访问不存在的$_POST['datai']会触发“索引未定义”的PHP报错。


解决方案

方案1:用readonly替代disabled(最简单)

readonly属性会让输入框无法编辑,但值会正常随表单提交:

document.getElementById("datai").readOnly = true;

方案2:保留disabled,新增隐藏字段同步值

如果必须用disabled,可以添加一个隐藏input来传递值:

<!-- 原date输入框 -->
<input type="date" class="form-control" name="datai" placeholder="" id="datai" disabled>
<!-- 新增隐藏字段,name和原输入框一致 -->
<input type="hidden" name="datai" id="hidden_datai">
const dataiInput = document.getElementById("datai");
// 设置固定日期后再禁用
dataiInput.value = "2024-05-20"; // 替换成你的特定日期
dataiInput.disabled = true;
// 将值同步到隐藏字段
document.getElementById("hidden_datai").value = dataiInput.value;

方案3:服务器端直接赋值(不依赖前端)

如果这个日期是固定值或可在服务器端生成,直接在PHP里赋值,无需从$_POST获取:

if (isset($_POST["submit"])) {
    // 直接设置特定日期,比如'2024-05-20'
    $datai = '2024-05-20';
    // 或者用当前日期:$datai = date('Y-m-d');
}

额外建议:增加参数存在性判断

无论用哪种方案,都建议在PHP里先判断$_POST['datai']是否存在,避免报错:

if (isset($_POST["submit"])) {
    $datai = isset($_POST['datai']) ? date('Y-m-d', strtotime($_POST['datai'])) : '默认日期';
}

内容的提问来源于stack exchange,提问作者sltd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 02:12:37