如何用PHP通过日期输入表单将YYYYMMDD格式日期写入TXT文件?
解答你的两个PHP日期写入TXT问题
先来看你的第一个问题:如何使用日期输入表单(<input type="date">)将日期写入TXT文件,同时修复你现有代码无法使用日期表单的问题。
问题1:使用日期输入表单写入TXT文件
你的现有代码存在几个小问题:表单未完整定义、$_POST判断逻辑不准确、文件路径和引号使用有误。下面是修正后的完整代码:
<?php $file = "/var/www/html/from.txt"; // 只在表单提交且存在from_date字段时执行写入 if(isset($_POST['from_date']) && !empty($_POST['from_date'])) { $postedDate = $_POST['from_date']; // 将提交的日期写入文件 file_put_contents($file, $postedDate); } ?> <!-- 显示已保存的日期 --> <a>From : </a> <?php // 读取并显示文件内容,注意引号闭合 echo file_exists($file) ? file_get_contents($file) : '未设置日期'; ?> <!-- 日期输入表单 --> <form action="" method="POST"> <label for="from_date">选择日期:</label> <input type="date" id="from_date" name="from_date" required> <button type="submit">保存日期</button> </form>
关键修正点:
- 完整定义了表单:添加了
method="POST"、日期输入框的name属性(必须设置,PHP才能通过$_POST['from_date']获取值) - 优化了提交判断:只有当
from_date字段存在且不为空时才写入,避免刷新页面时写入空内容 - 修复了
file_get_contents的引号错误:file_get_contents("from.txt")(之前少了前引号) - 添加了
file_exists判断:避免文件不存在时出现错误
问题2:将YYYYMMDD格式的日期写入TXT文件
HTML的<input type="date">默认提交的日期格式是YYYY-MM-DD,如果需要转换成YYYYMMDD格式写入文件,可以用PHP的date()函数或者DateTime类来处理:
方法1:使用date()和strtotime()
<?php $file = "/var/www/html/from.txt"; if(isset($_POST['from_date']) && !empty($_POST['from_date'])) { // 将YYYY-MM-DD格式转成时间戳,再格式化为YYYYMMDD $formattedDate = date('Ymd', strtotime($_POST['from_date'])); file_put_contents($file, $formattedDate); } ?> <!-- 表单和显示部分和问题1一致,只需替换PHP写入逻辑 --> <a>From : </a> <?php echo file_exists($file) ? file_get_contents($file) : '未设置日期'; ?> <form action="" method="POST"> <label for="from_date">选择日期:</label> <input type="date" id="from_date" name="from_date" required> <button type="submit">保存日期</button> </form>
方法2:使用DateTime类(更推荐,处理日期更可靠)
<?php $file = "/var/www/html/from.txt"; if(isset($_POST['from_date']) && !empty($_POST['from_date'])) { $date = new DateTime($_POST['from_date']); $formattedDate = $date->format('Ymd'); file_put_contents($file, $formattedDate); } ?>
额外验证建议:
如果担心用户提交无效日期,可以添加验证逻辑确保日期格式正确:
$date = DateTime::createFromFormat('Y-m-d', $_POST['from_date']); if($date && $date->format('Y-m-d') === $_POST['from_date']) { // 日期有效,执行写入 $formattedDate = $date->format('Ymd'); file_put_contents($file, $formattedDate); } else { echo '请输入有效的日期'; }
内容的提问来源于stack exchange,提问作者Fajar Jul
相关产品推荐
相关产品推荐

