dedecms5.3.1“顶一下”、“踩一下”统计总数问题

大家都知道,在dedecms5.3.1版本中,加入了顶一下、踩一下的功能,觉得非常不错。但在使用中,本人遇到这样的问题,就是顶一下统计数字显示加1,可是刷新后数字又回原,再怎么刷新也是原来的数字,没有加1,但是如果将这个页面关闭,再打开,该统计数据又是对的——加了1后的结果,在dedecms论坛上搜索了半天也没有找到解决方法,也就是说按照网友们的方法都试过了,无效。并且恢复默认的模板也不行。
想想自己是改了这个顶一下、踩一下功能的(见外面的贴子),按照那个帖子的修改方法,我再仔细的检查了一遍(对照默认的文件),发现plus/digg_ajax.php文件里的最后少了一个“AjaxHead();”语句,加上后问题解决。

所以,今后遇到这样的问题,不妨首先考虑一下自己近来都做了些什么,然后再顺着原来的轨迹去检查一遍,也许就能解决问题。你需要检查的方面是,相关的文章页面(例如:article_article.html)里面的相关代码是否有问题,对照默认的吧,如下;然后再检查上面的 digg_ajax.php 是否有问题;最后检查一下css(在templets/style)里面的代码是否有问题。

article_article.html 里面的第一段:
<script language="javascript" type="text/javascript">
<!--
function CheckLogin(){
var taget_obj = document.getElementById('_ajax_feedback');
myajax = new DedeAjax(taget_obj,false,false,'','','');
myajax.SendGet2("{dede:global.cfg_cmsurl/}/member/ajax_feedback.php");
DedeXHTTP = null;
}
function checkSubmit(){
if(document.feedback.msg.value!='') document.feedback.submit();
else alert("评论内容不能为空!");
}
function postBadGood(ftype,fid)
{
var taget_obj = document.getElementById(ftype+fid);
var saveid = GetCookie('badgoodid');
if(saveid != null)
{
  var saveids = saveid.split(',');
  var hasid = false;
  saveid = '';
  j = 1;
  for(i=saveids.length-1;i>=0;i--)
  {
   if(saveids[i]==fid && hasid) continue;
   else {
    if(saveids[i]==fid && !hasid) hasid = true;
    saveid += (saveid=='' ? saveids[i] : ','+saveids[i]);
    j++;
    if(j==10 && hasid) break;
    if(j==9 && !hasid) break;
   }
  }
  if(hasid) { alert('您刚才已表决过了喔!'); return false;}
  else saveid += ','+fid;
  SetCookie('badgoodid',saveid,1);
}
else
{
  SetCookie('badgoodid',fid,1);
}
myajax = new DedeAjax(taget_obj,false,false,'','','');
myajax.SendGet2("{dede:field name='phpurl'/}/feedback.php?aid="+fid+"&action="+ftype+"&fid="+fid);
DedeXHTTP = null;
}
function postDigg(ftype,aid)
{
var taget_obj = document.getElementById('newdigg');
var saveid = GetCookie('diggid');
if(saveid != null)
{
  var saveids = saveid.split(',');
  var hasid = false;
  saveid = '';
  j = 1;
  for(i=saveids.length-1;i>=0;i--)
  {
   if(saveids[i]==aid && hasid) continue;
   else {
    if(saveids[i]==aid && !hasid) hasid = true;
    saveid += (saveid=='' ? saveids[i] : ','+saveids[i]);
    j++;
    if(j==20 && hasid) break;
    if(j==19 && !hasid) break;
   }
  }
  if(hasid) { alert("您已经顶过该帖,请不要重复顶帖 !"); return; }
  else saveid += ','+aid;
  SetCookie('diggid',saveid,1);
}
else
{
  SetCookie('diggid',aid,1);
}
myajax = new DedeAjax(taget_obj,false,false,'','','');
var url = "{dede:global.cfg_phpurl/}/digg_ajax.php?action="+ftype+"&id="+aid;
myajax.SendGet2(url);
DedeXHTTP = null;
}
function getDigg(aid)
{
var taget_obj = document.getElementById('newdigg');
myajax = new DedeAjax(taget_obj,false,false,'','','');
myajax.SendGet2("{dede:global.cfg_phpurl/}/digg_ajax.php?id="+aid);
DedeXHTTP = null;
}

-->
</script>

article_article.html 里面的第二段:
   <div class="newdigg" id="newdigg">
    <div class="diggbox digg_good" onmousemove="this.style.backgroundPosition='left bottom';" onmouseout="this.style.backgroundPosition='left top';" onclick="javascript:postDigg('good',{dede:field.id/})">
     <div class="digg_act">顶一下</div>
     <div class="digg_num">({dede:field.goodpost/})</div>
     <div class="digg_percent">
      <div class="digg_percent_bar"><span style="width:{dede:field.goodper/}%"></span></div>
      <div class="digg_percent_num">{dede:field.goodper/}%</div>
     </div>
    </div>
    <div class="diggbox digg_bad" onmousemove="this.style.backgroundPosition='right bottom';" onmouseout="this.style.backgroundPosition='right top';" onclick="javascript:postDigg('bad',{dede:field.id/})">
     <div class="digg_act">踩一下</div>
     <div class="digg_num">({dede:field.badpost/})</div>
     <div class="digg_percent">
      <div class="digg_percent_bar"><span style="width:{dede:field.badper/}%"></span></div>
      <div class="digg_percent_num">{dede:field.badper/}%</div>
     </div>
    </div>
   </div>
    <script language="javascript" type="text/javascript">getDigg({dede:field.id/});</script>

digg_ajax.php 里面的原代码情况:(全部)
<?php

/**
* 文档digg处理ajax文件
*
*/
require_once(dirname(__FILE__)."/../include/common.inc.php");

$action = isset($action) ? trim($action) : '';
$id = (isset($id) && is_numeric($id)) ? $id : 0;
if($id < 1)
{
exit();
}
$maintable = '#@__archives';
if($action == 'good')
{
$dsql->ExecuteNoneQuery("Update `$maintable` set scores = scores + {$cfg_caicai_add},goodpost=goodpost+1,lastpost=".time()." where id=$id");
}
else if($action=='bad')
{
$dsql->ExecuteNoneQuery("Update `$maintable` set scores = scores - {$cfg_caicai_sub},badpost=badpost+1,lastpost=".time()." where id=$id");
}
$digg = '';
$row = $dsql->GetOne("Select goodpost,badpost,scores From `$maintable` where id=$id ");
if(!is_array($row))
{
exit();
}
if($row['goodpost']+$row['badpost'] == 0)
{
$row['goodper'] = $row['badper'] = 0;
}
else
{
$row['goodper'] = number_format($row['goodpost']/($row['goodpost']+$row['badpost']),3)*100;
$row['badper'] = 100-$row['goodper'];
}

$digg = '<div class="diggbox digg_good" onmousemove="this.style.backgroundPosition=\'left bottom\';" onmouseout="this.style.backgroundPosition=\'left top\';" onclick="postDigg(\'good\','.$id.')">
   <div class="digg_act">顶一下</div>
   <div class="digg_num">('.$row['goodpost'].')</div>
   <div class="digg_percent">
    <div class="digg_percent_bar"><span style="width:'.$row['goodper'].'%"></span></div>
    <div class="digg_percent_num">'.$row['goodper'].'%</div>
   </div>
  </div>
  <div class="diggbox digg_bad" onmousemove="this.style.backgroundPosition=\'right bottom\';" onmouseout="this.style.backgroundPosition=\'right top\';" onclick="postDigg(\'bad\','.$id.')">
   <div class="digg_act">踩一下</div>
   <div class="digg_num">('.$row['badpost'].')</div>
   <div class="digg_percent">
    <div class="digg_percent_bar"><span style="width:'.$row['badper'].'%"></span></div>
    <div class="digg_percent_num">'.$row['badper'].'%</div>
   </div>
  </div>';
AjaxHead();
echo $digg;
exit();


73.33%(11)

26.67%(4)

发表评论

*