使用织梦自带的“表单”功能
这是最简单直接的方法,织梦的后台有一个“表单管理”模块,可以让你快速创建一个表单并收集用户提交的数据,当你使用这个功能时,提交时间会自动被记录。

(图片来源网络,侵删)
操作步骤:
-
创建表单
- 登录织梦后台,找到 [核心] -> [表单管理]。
- 点击 [增加表单],填写表单名称(“用户反馈”),选择表单模板(可以使用默认的,或者自定义一个更美观的模板),然后保存。
-
添加表单字段
- 在表单管理列表中,找到你刚创建的表单,点击右侧的 [管理字段]。
- 在这里添加你需要的字段,姓名、邮箱、留言内容等。
- 关键点:织梦会自动为每个表单数据表添加一个
dede_addonfields表,并且会自动包含一个dtime(或senddate) 字段来记录提交时间,你不需要手动添加这个字段。
-
在前台页面调用表单
- 在你需要放置表单的页面(比如一个自定义的HTML页面),使用织梦的标签来调用表单。
- 标签代码:
{dede:form name='你的表单名称'} <!-- 这里是表单内容,通常由织梦自动生成,你也可以手动编写 --> {dede:field name='姓名'/} {dede:field name='邮箱'/} {dede:field name='留言内容'/} <input type="submit" value="提交" /> {/dede:form} - 更简单的方式是,在后台“表单管理”中,找到你的表单,点击 [生成表单代码],然后将代码复制到你想要显示的页面即可。
-
查看提交的数据和时间
(图片来源网络,侵删)- 当用户在前台提交表单后,你可以在后台 [核心] -> [表单管理] 中,找到你的表单,点击 [数据管理]。
- 在数据列表中,你会看到所有提交的记录,并且第一列通常就是“发布时间”或“提交时间”,这个时间就是自动记录的。
使用织梦自带的表单功能,你什么都不用做,提交时间会自动记录并显示在后台的数据管理中。
使用自定义的HTML表单(最常见)
很多时候,开发者会自己写HTML表单,然后通过织梦的/plus/diy.php接口来处理提交,这种情况下,提交时间需要手动获取并写入数据库。
实现步骤:
第1步:在数据库中添加时间字段
- 找到你的自定义表单对应的数据表,这个表名通常是根据你在
diy.php中设置的table参数或者默认的dede_diyform_加上你的表单名称生成的,如果你在表单管理里创建了一个名为“feedback”的自定义表单,数据表可能是dede_diyform_feedback。 - 进入你的网站数据库管理工具(如phpMyAdmin)。
- 为这个表添加一个用于存储时间的字段,
submit_time。ALTER TABLE `你的数据表名` ADD `submit_time` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '提交时间戳';
INT(10) UNSIGNED是存储Unix时间戳的常用类型。DEFAULT '0'设置一个默认值。
第2步:修改表单提交页面 (diy.php)
这是最核心的一步,你需要修改织梦处理表单提交的文件/plus/diy.php,在数据插入数据库之前,将当前时间戳添加进去。
-
打开
/plus/diy.php文件。 -
找到类似下面这段代码,它负责处理表单数据并插入数据库:
// ... 前面的代码 ... $inquery = "INSERT INTO `{$diy->table}` (`{$addvar}`) VALUES ('".implode("', '", $addvalue)."')"; // ... 后面的代码 ... -
在这段代码之前,添加获取当前时间戳的代码,并将其加入
$addvalue数组。修改后的代码示例:
// ... 前面的代码 ... // 1. 获取当前时间戳 $time = time(); // 2. 将所有字段值存入一个数组 // 注意:这里的 $addvalue 数组是织梦已经处理好的 // 我们只需要在数组的末尾添加我们的时间值 // 假设你的时间字段名是 submit_time // 我们需要将时间值添加到 $addvalue 数组的最后 // 更稳妥的方法是重新构建 $addvar 和 $addvalue // 原来的代码大概是: // $addvalue = array(); // foreach($diy->fieldlist as $field=>$fieldvalue){ // $addvalue[] = ${$field}; // } // $addvar = implode(',', $diy->fieldlist); // 我们可以这样修改: $addvalue = array(); $addvar = array(); foreach($diy->fieldlist as $field=>$fieldvalue){ ${$field} = FilterSearch(stripslashes(${$field})); ${$field} = GetFieldValue(${$field}, $fieldvalue, $diy); $addvalue[] = ${$field}; $addvar[] = "`{$field}`"; } // 3. 将时间字段和值添加到数组中 $addvar[] = "`submit_time`"; $addvalue[] = $time; // 4. 重新构建SQL语句 $addvar = implode(',', $addvar); $addvalue = implode("', '", $addvalue); $inquery = "INSERT INTO `{$diy->table}` ($addvar) VALUES ('$addvalue')"; // ... 后面的代码 ...更简单粗暴但有效的方法(如果你的表单字段不多): 如果你只是想快速添加,可以在
$inquery定义之前直接添加:// ... 前面的代码 ... // 获取当前时间戳 $submit_time = time(); // 将时间变量加入提交值数组 // 假设你的表单里有一个名为 name 的字段 // $name 就是它的值 // 我们只需要在构建 $addvalue 数组时把 $submit_time 加进去 // 找到下面这行(通常在文件中部) // $addvalue = array(); // foreach($diy->fieldlist as $field=>$fieldvalue){ // $addvalue[] = ${$field}; // } // 修改为: $addvalue = array(); foreach($diy->fieldlist as $field=>$fieldvalue){ $addvalue[] = ${$field}; } // 在循环结束后,把我们的时间加进去 $addvalue[] = $submit_time; // 然后修改 $addvar $addvar = implode(',', $diy->fieldlist) . ', `submit_time`'; $inquery = "INSERT INTO `{$diy->table}` (`{$addvar}`) VALUES ('".implode("', '", $addvalue)."')"; // ... 后面的代码 ...
第3步:在前台显示提交时间
数据表中已经有了时间,你可以在显示表单数据的页面上,使用织梦的{dede:field}标签来调用它。
{dede:loop table='你的数据表名' sort='submit_time' if=''}
<div class="feedback-item">
<p><strong>姓名:</strong>{dede:field.姓名/}</p>
<p><strong>留言:</strong>{dede:field.留言内容/}</p>
<p><strong>提交时间:</strong>{dede:field.submit_time function='MyDate('Y-m-d H:i:s', @me)'/}</p>
</div>
{/dede:loop}
关键点:
table='你的数据表名':指定要查询的数据表。sort='submit_time':按提交时间排序,最新的在前面。{dede:field.submit_time ...}:调用submit_time字段。function='MyDate('Y-m-d H:i:s', @me)':这是最关键的!submit_time存储的是Unix时间戳(一个数字),直接显示看不懂。MyDate是织梦内置的日期格式化函数,它会把时间戳转换成我们常见的年-月-日 时:分:秒的格式。
使用第三方表单插件
如果你使用的是一些第三方的表单插件,请查阅该插件的官方文档,大多数成熟的插件都会提供记录提交时间的功能,或者允许你通过钩子、回调函数等方式来自定义添加提交时间。
| 场景 | 核心操作 | 优点 | 缺点 |
|---|---|---|---|
| 织梦自带表单 | 无需任何操作,时间自动记录。 | 简单、快捷,无需代码知识。 | 灵活性差,样式和功能受限。 |
| 自定义HTML表单 | 数据库加字段 修改 /plus/diy.php前台用 MyDate函数格式化 |
灵活性极高,可定制任何功能。 | 需要修改核心文件,有一定技术门槛。 |
| 第三方表单插件 | 查阅插件文档,使用其提供的功能。 | 功能强大,通常有很好的用户体验和后台管理。 | 可能需要付费,或依赖插件的更新。 |
对于大多数开发者来说,场景二是最常用也是最需要掌握的方法,希望这个详细的教程能帮到你!
