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

(图片来源网络,侵删)
核心思路
无论使用哪种方法,核心思路都是:
- 找到表单数据对应的数据库表:织梦的表单数据通常存储在
dede_addonsoft(早期版本)或dede_arctiny(如果关联文章)等表中,但更常见的是使用自定义模型,数据存在dede_addonX(X是模型ID) 表中。 - 编写一个SQL查询:查询该表中所有记录的数量(
COUNT(*))。 - 在模板中调用并显示这个数量:使用织梦的标签(如
{dede:sql})来执行查询并输出结果。
使用 {dede:sql} 标签(最常用、最灵活)
这是最推荐的方法,因为它不涉及修改核心文件,只需要修改模板即可,非常安全。
步骤 1:确定数据表名
你需要知道你的表单数据存在哪个数据库表里。
- 登录你的网站后台。
- 进入【核心】->【内容模型管理】。
- 找到你用于表单的那个模型(留言反馈”、“在线报名”等),点击后面的“字段管理”。
- 在浏览器地址栏,你会看到一个
mtype.php的链接,后面会有一个mid=X的参数,这个X就是你的模型ID。 - 你的数据表名通常是
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文件,在每次提交后更新一个缓存文件或全局变量来记录人数。这种方法非常不推荐,因为:
- 侵入性强,修改了核心文件,升级织梦时会被覆盖。
- 容易出错,可能导致网站异常。
- 维护困难。
除非你有特殊需求且无法使用前两种方法,否则请尽量避免。
总结与建议
| 方法 | 优点 | 缺点 | 推荐度 |
|---|---|---|---|
{dede:sql} |
灵活、安全、无需修改文件,一次修改即可 | 每次页面加载都会执行一次查询,对性能有微小影响(但对于普通表单数据量不大,可以忽略) | ★★★★★ (最推荐) |
| 自定义函数 | 代码规范、可复用,性能更好(函数可缓存) | 需要修改 common.func.php 文件,有一定门槛 |
★★★★☆ (适合有开发经验的用户) |
| 修改PHP | 实时性最高(如果用缓存) | 风险高、易被覆盖、维护难 | ★☆☆☆☆ (不推荐) |
对于绝大多数用户,强烈推荐使用【方法一】。 它简单、直接、安全,完全能满足需求。
最后再次提醒:
- 请务必将代码中的
dede_addon5替换为你自己模型对应的正确数据表名。 - 如果你的表单数据有特殊的状态(比如只统计“已审核”的),需要在SQL语句中添加
WHERE条件,SELECT COUNT(*) FROMdede_addon5WHERE arcrank > -1。

