织梦提交表单显示人数

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

下面我将为您提供几种方法,从最简单到最灵活,您可以根据自己的需求选择。

织梦提交表单显示人数
(图片来源网络,侵删)

核心思路

无论使用哪种方法,核心思路都是:

  1. 找到表单数据对应的数据库表:织梦的表单数据通常存储在 dede_addonsoft(早期版本)或 dede_arctiny(如果关联文章)等表中,但更常见的是使用自定义模型,数据存在 dede_addonX (X是模型ID) 表中。
  2. 编写一个SQL查询:查询该表中所有记录的数量(COUNT(*))。
  3. 在模板中调用并显示这个数量:使用织梦的标签(如 {dede:sql})来执行查询并输出结果。

使用 {dede:sql} 标签(最常用、最灵活)

这是最推荐的方法,因为它不涉及修改核心文件,只需要修改模板即可,非常安全。

步骤 1:确定数据表名

你需要知道你的表单数据存在哪个数据库表里。

  1. 登录你的网站后台。
  2. 进入【核心】->【内容模型管理】。
  3. 找到你用于表单的那个模型(留言反馈”、“在线报名”等),点击后面的“字段管理”。
  4. 在浏览器地址栏,你会看到一个 mtype.php 的链接,后面会有一个 mid=X 的参数,这个 X 就是你的模型ID
  5. 你的数据表名通常是 dede_addon + 模型ID,如果你的模型ID是 5,那么数据表名就是 dede_addon5

提示:如果你使用的是旧版织梦或者默认的“留言簿”功能,数据表可能直接是 dede_guestbook,你可以直接在后台的“留言簿管理”里查看链接,或者在数据库里找到这个表。

织梦提交表单显示人数
(图片来源网络,侵删)

步骤 2:修改模板文件

找到你显示表单的那个模板文件。

  • 留言簿模板:/templets/default/guestbook.htm
  • 自定义表单模板:/templets/plus/diyform.htm 或你自定义的模板文件。

打开这个模板文件,在你想显示人数的地方(例如表单标题旁边),插入以下代码:

<!-- 方式一:直接显示数字 -->
<span>已有 <strong>{dede:sql sql="SELECT COUNT(*) as count FROM `dede_addon5`"}[field:count/]{/dede:sql}</strong> 人提交</span>
<!-- 方式二:更美观的样式 -->
<p class="submit-count">
    已有 <i class="fa fa-users" aria-hidden="true"></i> 
    <strong>{dede:sql sql="SELECT COUNT(*) as count FROM `dede_addon5`"}[field:count/]{/dede:sql}</strong> 位用户提交
</p>

代码解释:

  • {dede:sql ...}:织梦执行自定义SQL的标签。
  • sql="SELECT COUNT(*) as count FROMdede_addon5:这是SQL查询语句。
    • SELECT COUNT(*):计算总行数。
    • as count:将计算结果命名为 count,方便后面调用。
    • FROMdede_addon5``:指定要查询的表名。请务必替换成你自己的表名
  • [field:count/]:用于输出查询结果中名为 count 的字段,也就是我们计算出的总人数。

步骤 3:更新缓存并测试

保存模板文件后,登录织梦后台,点击【系统】->【一键更新网站】->【更新所有】,然后刷新你的网页,就能看到效果了。

织梦提交表单显示人数
(图片来源网络,侵删)

使用自定义函数(更规范,适合多次调用)

如果你的网站需要在很多地方都显示这个提交人数,使用自定义函数会更规范,避免在多个模板里重复写SQL。

步骤 1:创建函数文件

在织梦的核心函数库文件 /include/common.func.php 的末尾,添加以下PHP函数:

/**
 * 获取指定模型下的提交总数
 * @param int $mid 模型ID
 * @return int 提交总数
 */
function GetFormCount($mid) {
    global $dsql;
    $table_name = 'dede_addon' . $mid;
    $count = 0;
    $query = "SELECT COUNT(*) AS num FROM `$table_name`";
    $dsql->Execute('me', $query);
    if ($row = $dsql->GetArray('me')) {
        $count = $row['num'];
    }
    return $count;
}

步骤 2:在模板中调用函数

你可以在任何模板文件中直接调用这个函数了。

<!-- 调用函数,传入模型ID(例如5) -->
<span>已有 <strong>{dede:global name='formcount' function='GetFormCount(@me)'/}</strong> 人提交</span>
<!-- 或者更清晰的写法,在模板里直接写PHP代码(需要模板支持PHP) -->
<span>已有 <strong><?php echo GetFormCount(5); ?></strong> 人提交</span>

注意:第一种 {dede:global} 的写法在某些织梦版本中可能不稳定,第二种直接写PHP代码的方式更可靠,但需要确保你的模板文件开启了PHP解析(通常默认是开启的)。


修改PHP文件(不推荐,有风险)

这种方法直接修改处理表单提交的PHP文件,在每次提交后更新一个缓存文件或全局变量来记录人数。这种方法非常不推荐,因为:

  1. 侵入性强,修改了核心文件,升级织梦时会被覆盖。
  2. 容易出错,可能导致网站异常。
  3. 维护困难。

除非你有特殊需求且无法使用前两种方法,否则请尽量避免。


总结与建议

方法 优点 缺点 推荐度
{dede:sql} 灵活、安全、无需修改文件,一次修改即可 每次页面加载都会执行一次查询,对性能有微小影响(但对于普通表单数据量不大,可以忽略) ★★★★★ (最推荐)
自定义函数 代码规范、可复用,性能更好(函数可缓存) 需要修改 common.func.php 文件,有一定门槛 ★★★★☆ (适合有开发经验的用户)
修改PHP 实时性最高(如果用缓存) 风险高、易被覆盖、维护难 ★☆☆☆☆ (不推荐)

对于绝大多数用户,强烈推荐使用【方法一】。 它简单、直接、安全,完全能满足需求。

最后再次提醒:

  • 请务必将代码中的 dede_addon5 替换为你自己模型对应的正确数据表名。
  • 如果你的表单数据有特殊的状态(比如只统计“已审核”的),需要在SQL语句中添加 WHERE 条件,SELECT COUNT(*) FROMdede_addon5WHERE arcrank > -1
-- 展开阅读全文 --
头像
dede环境一分钟搞定?真的假的?
« 上一篇 02-25
C语言function函数如何正确使用与定义?
下一篇 » 02-25

相关文章

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

目录[+]