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

如何在每次提交表单时新增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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 12:25:10