答案:通过灵动标签或SQL查询可调用指定投票ID结果。设置$voteid后,解析enewsvote表中votetext字段获取选项与票数,或查询enewsvotetotal表计算占比,静态页需用AJAX加载。

在使用帝国CMS时,如果想调用指定投票ID的投票结果,可以通过灵动标签或PHP代码直接调用数据库中的投票数据。默认情况下,帝国CMS的投票系统会将投票信息存储在 [!db.pre!]enewsvote 表中,而投票选项和统计结果则保存在 [!db.pre!]enewsvotetotal 表中。
1. 使用灵动标签调用指定投票ID的结果
通过帝国CMS的灵动标签(e:loop),可以灵活地调用某个投票ID的投票结果。以下是一个示例代码:
fetch1("select * from {$dbtbpre}enewsvote where voteid='$voteid'");
echo $vr['title']; // 输出投票标题
$votetext = $vr['votetext'];
$options = explode('||||||', $votetext);
foreach($options as $o){
$oi = explode('::::::', $o);
echo '选项:' . $oi[0] . ' - 票数:' . $oi[1] . '
';
}
?>
说明:
- $voteid = 1:修改为你想调用的具体投票ID。
- votetext 字段存储了所有选项及票数,格式为“选项名称::::::票数||||||”。
- 使用 explode 分割字符串,提取每个选项和对应票数。
2. 直接通过SQL查询获取投票结果
如果你希望更精确地控制输出,比如显示百分比或排序,可以直接查询数据库:
query("select * from {$dbtbpre}enewsvotetotal where voteid='$voteid' order by num desc");
while($r = $empire->fetch($sql)){
$percent = $r['num'] > 0 ? round($r['num'] / $r['allnum'] * 100, 2) : 0;
echo "选项:{$r['title']} - 票数:{$r['num']} - 占比:{$percent}%
";
}
?>
说明:
- enewsvotetotal 表记录了每个选项的详细投票数量和总票数(allnum)。
- 可计算出每个选项的占比,便于展示图表或进度条。
3. 前台静态页面调用注意事项
若你使用生成静态页功能,PHP代码不会执行。此时建议:
- 使用JS+AJAX方式动态加载投票结果。
- 创建一个单独的PHP文件(如 showvote.php),通过iframe或ajax引入到页面中。
- 确保该PHP文件与帝国CMS环境兼容,引入 e/class/connect.php 和 e/class/db_sql.php。
基本上就这些方法。根据你的模板类型和生成方式选择合适的方式调用即可。关键是要清楚投票数据的存储结构,然后按需提取显示。










