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

评论(0)