如何在每次提交表单时新增Div并保留已生成的旧Div?
解决方法
你的现有代码仅在表单提交时输出最新一条生成的div,要实现保留所有旧div同时输出新div,只需调整逻辑,让页面每次加载时都读取所有存储的数据并遍历输出即可:
修改后的代码
<?php // 处理表单提交:追加数据到文件 if (isset($_POST['textTitle'], $_POST['commentText'])) { // 用PHP_EOL适配不同系统换行,同时去除内容首尾空白 file_put_contents("titel.txt", trim($_POST['textTitle']) . PHP_EOL, FILE_APPEND); file_put_contents("kommentar.txt", trim($_POST['commentText']) . PHP_EOL, FILE_APPEND); } // 读取所有存储的标题和评论,自动忽略换行符与空行 $titelArray = file("titel.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); $commentArray = file("kommentar.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); // 遍历所有数据,生成对应的div $maxCount = max(count($titelArray), count($commentArray)); for ($i = 0; $i < $maxCount; $i++) { $title = isset($titelArray[$i]) ? $titelArray[$i] : '无标题'; $comment = isset($commentArray[$i]) ? $commentArray[$i] : '无评论'; echo '<div style="border:1px solid #eee; padding:10px; margin:10px 0;">'; echo '<h2>' . htmlspecialchars($title) . '</h2>'; echo '<p>' . htmlspecialchars($comment) . '</p>'; echo '</div>'; } ?>
关键修改说明
- 将读取文件和输出div的逻辑移到表单提交判断的外面:不管用户是首次访问还是提交表单,页面都会显示所有历史内容。
- 添加
FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES参数:自动过滤换行符和空行,避免输出多余空白。 - 用
htmlspecialchars()转义内容:防止用户输入的特殊字符引发XSS攻击,提升安全性。 - 处理数组长度不一致的情况:如果两个文件行数不匹配,会用默认文本填充,避免程序报错。
额外优化建议
目前用两个文件分别存储标题和评论,容易出现数据不匹配的问题,建议改用单个JSON文件存储完整记录,示例如下:
// 表单提交时写入JSON文件 if (isset($_POST['textTitle'], $_POST['commentText'])) { $record = [ 'title' => trim($_POST['textTitle']), 'comment' => trim($_POST['commentText']) ]; $records = json_decode(file_get_contents("comments.json"), true) ?: []; $records[] = $record; file_put_contents("comments.json", json_encode($records, JSON_PRETTY_PRINT)); } // 读取并输出所有记录 $records = json_decode(file_get_contents("comments.json"), true) ?: []; foreach ($records as $record) { echo '<div style="border:1px solid #eee; padding:10px; margin:10px 0;">'; echo '<h2>' . htmlspecialchars($record['title']) . '</h2>'; echo '<p>' . htmlspecialchars($record['comment']) . '</p>'; echo '</div>'; }
这种方式数据关联性更强,后期维护也更方便。
内容的提问来源于stack exchange,提问作者cytentis
相关产品推荐
相关产品推荐

