织梦如何获取表单提交的具体时间?

99ANYc3cd6
预计阅读时长 18 分钟
位置: 首页 织梦建站 正文

使用织梦自带的“表单”功能

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

织梦获取提交表单时间
(图片来源网络,侵删)

操作步骤:

  1. 创建表单

    • 登录织梦后台,找到 [核心] -> [表单管理]
    • 点击 [增加表单],填写表单名称(“用户反馈”),选择表单模板(可以使用默认的,或者自定义一个更美观的模板),然后保存。
  2. 添加表单字段

    • 在表单管理列表中,找到你刚创建的表单,点击右侧的 [管理字段]
    • 在这里添加你需要的字段,姓名、邮箱、留言内容等。
    • 关键点:织梦会自动为每个表单数据表添加一个 dede_addonfields 表,并且会自动包含一个 dtime (或 senddate) 字段来记录提交时间,你不需要手动添加这个字段。
  3. 在前台页面调用表单

    • 在你需要放置表单的页面(比如一个自定义的HTML页面),使用织梦的标签来调用表单。
    • 标签代码
      {dede:form name='你的表单名称'}
          <!-- 这里是表单内容,通常由织梦自动生成,你也可以手动编写 -->
          {dede:field name='姓名'/}
          {dede:field name='邮箱'/}
          {dede:field name='留言内容'/}
          <input type="submit" value="提交" />
      {/dede:form}
    • 更简单的方式是,在后台“表单管理”中,找到你的表单,点击 [生成表单代码],然后将代码复制到你想要显示的页面即可。
  4. 查看提交的数据和时间

    织梦获取提交表单时间
    (图片来源网络,侵删)
    • 当用户在前台提交表单后,你可以在后台 [核心] -> [表单管理] 中,找到你的表单,点击 [数据管理]
    • 在数据列表中,你会看到所有提交的记录,并且第一列通常就是“发布时间”或“提交时间”,这个时间就是自动记录的。

使用织梦自带的表单功能,你什么都不用做,提交时间会自动记录并显示在后台的数据管理中。


使用自定义的HTML表单(最常见)

很多时候,开发者会自己写HTML表单,然后通过织梦的/plus/diy.php接口来处理提交,这种情况下,提交时间需要手动获取并写入数据库

实现步骤:

第1步:在数据库中添加时间字段

  1. 找到你的自定义表单对应的数据表,这个表名通常是根据你在diy.php中设置的table参数或者默认的dede_diyform_加上你的表单名称生成的,如果你在表单管理里创建了一个名为“feedback”的自定义表单,数据表可能是 dede_diyform_feedback
  2. 进入你的网站数据库管理工具(如phpMyAdmin)。
  3. 为这个表添加一个用于存储时间的字段,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,在数据插入数据库之前,将当前时间戳添加进去。

  1. 打开 /plus/diy.php 文件。

  2. 找到类似下面这段代码,它负责处理表单数据并插入数据库:

    // ... 前面的代码 ...
    $inquery = "INSERT INTO `{$diy->table}` (`{$addvar}`) VALUES ('".implode("', '", $addvalue)."')";
    // ... 后面的代码 ...
  3. 在这段代码之前,添加获取当前时间戳的代码,并将其加入$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函数格式化
灵活性极高,可定制任何功能。 需要修改核心文件,有一定技术门槛。
第三方表单插件 查阅插件文档,使用其提供的功能。 功能强大,通常有很好的用户体验和后台管理。 可能需要付费,或依赖插件的更新。

对于大多数开发者来说,场景二是最常用也是最需要掌握的方法,希望这个详细的教程能帮到你!

-- 展开阅读全文 --
头像
织梦tag标签是什么?
« 上一篇 03-28
环保科技企业织梦模板
下一篇 » 03-28

相关文章

取消
微信二维码
支付宝二维码

目录[+]