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

如何在JavaScript表格中显示数据的最后修改时间而非文档修改时间?

解决数据最后修改时间显示问题

核心问题在于数据的last_modified字段没有在更新时同步更新,前端仅负责显示,需从后端数据处理和前端格式化两方面调整:

1. 确保后端数据库与更新逻辑正确

数据库字段配置

如果使用MySQL,直接给last_modified字段设置自动更新规则,数据修改时会自动覆盖为当前时间:

CREATE TABLE 你的表名 (
    id INT PRIMARY KEY AUTO_INCREMENT,
    inkoopprijs DECIMAL(10,2),
    verkoopprijs DECIMAL(10,2),
    producten VARCHAR(255),
    create_date DATETIME DEFAULT CURRENT_TIMESTAMP,
    -- 新增自动更新规则
    last_modified DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

其他数据库如PostgreSQL可通过触发器实现类似自动更新效果。

后端更新接口调整

若数据库未设置自动更新,在处理编辑请求的PHP代码(如prijswijzigen.php)中,手动更新last_modified字段:

// 处理编辑提交的逻辑示例
if (isset($_GET['edit']) && !empty($_POST)) {
    $id = $_GET['edit'];
    $inkoopprijs = $_POST['inkoopprijs'];
    $verkoopprijs = $_POST['verkoopprijs'];
    $producten = $_POST['producten'];

    // 更新语句中手动设置last_modified为当前时间
    $updateQuery = "UPDATE 你的表名 SET inkoopprijs = ?, verkoopprijs = ?, producten = ?, last_modified = NOW() WHERE id = ?";
    // 用预处理语句执行查询,避免SQL注入
    $stmt = $pdo->prepare($updateQuery);
    $stmt->execute([$inkoopprijs, $verkoopprijs, $producten, $id]);
}

2. 前端时间格式化优化

后端返回正确时间后,可用JavaScript将原始时间字符串格式化为更友好的样式:

// 定义时间格式化函数
function formatDateTime(dateString) {
    const date = new Date(dateString);
    // 格式化为 YYYY-MM-DD HH:MM:SS 格式
    const year = date.getFullYear();
    const month = String(date.getMonth() + 1).padStart(2, '0');
    const day = String(date.getDate()).padStart(2, '0');
    const hours = String(date.getHours()).padStart(2, '0');
    const minutes = String(date.getMinutes()).padStart(2, '0');
    const seconds = String(date.getSeconds()).padStart(2, '0');
    return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
}

// 渲染表格时调用格式化函数
if(response.length > 0)
{
    for (var count = 0;count < response.length; count++)
    {
        html += '<tr>';
        html += '<td>' +response[count].id+'</td>';
        html += '<td>€'+response[count].inkoopprijs+'</td>';
        html += '<td>€'+response[count].verkoopprijs+'</td>';
        html += '<td>' +response[count].producten+'</td>';
        html += '<td>' + formatDateTime(response[count].create_date) + '</td>';
        html += '<td>' + formatDateTime(response[count].last_modified) + '</td>';
        html += '<td><a href="../prijswijzigen.php?edit='+response[count].id+'" class="edit_btn">Edit</td>';
        html += '<td><a onclick="return confirm(\'确定要删除吗?\')" href="crud.php?del='+response[count].id+'" class="del_btn">Delete</td>';
        html += '</tr>';
        serial_no++;
    }
}

注:原代码中confirm()未传提示文本,建议补充避免用户误操作。

为什么当前last_modified和create_date相同?

数据创建时last_modified被设为与create_date一致的初始值,但后续修改数据时未更新该字段,导致其值始终停留在创建时间。而document.lastModified是HTML文件本身的修改时间,与数据库单条数据的修改时间无关,无法满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 02:31:33