没有投票时,投票脚本将返回NaN

时间:2019-09-06 06:59:21

标签: php

我正在使用GitHUB的投票脚本,并且一切正常,除了如果没有投票表决,它将返回NaN:https://github.com/agroknow/PAT/tree/master/custom/rating

我尝试检查 $ rating1 $ rating2 是否为数字,如果没有,请进行设置设为0,但这是行不通的。

我还尝试检查 $ current_rating

if(!is_numeric($current_rating)){
    $current_rating = 0;
}

enter image description here

代码如下:

<?php
function rating_bar($id,$units='',$static='') {

require('_config-rating.php');
include('inc/_dbcon.php');

$ip = $_SERVER['REMOTE_ADDR'];
if (!$units) {$units = 10;}
if (!$static) {$static = FALSE;}

$query = mysqli_query($conn, "SELECT total_votes, total_value, used_ips FROM ratings WHERE id = '{$id}';") or die (" Error: ".mysqli_error($conn));

if (mysqli_num_rows($query) == 0) {
    $sql    = "INSERT INTO ratings (id, total_votes, total_value, used_ips) VALUES ('$id', '0', '0', '')";
    $result = mysqli_query($conn, $sql);
}

$numbers = mysqli_fetch_assoc($query);

if ($numbers['total_votes'] < 1) {
    $count = 0;
} else {
    $count = $numbers['total_votes']; //how many votes total
}

$current_rating = $numbers['total_value']; //total number of rating added together and stored
$tense          = ($count==1) ? "röst" : "röster"; //plural form votes/vote
$voted          = mysqli_num_rows(mysqli_query($conn, "SELECT used_ips FROM ratings WHERE used_ips LIKE '%".$ip."%' AND id = '".$id."' "));

$rating_width = @number_format($current_rating/$count,2) * $rating_unitwidth;
$rating1      = @number_format($current_rating/$count,1);
$rating2      = @number_format($current_rating/$count,2);


if ($static == 'static') {
        $static_rater = array();
        $static_rater[] .= "\n".'<div class="ratingblock">';
        $static_rater[] .= '<div id="unit_long'.$id.'">';
        $static_rater[] .= '<ul id="unit_ul'.$id.'" class="unit-rating" style="width:'.$rating_unitwidth * $units.'px;">';
        $static_rater[] .= '<li class="current-rating" style="width:'.$rating_width.'px;">Currently '.$rating2.'/'.$units.'</li>';
        $static_rater[] .= '</ul>';
        $static_rater[] .= '<p class="static">'.$id.'. Röster: <strong> '.$rating1.'</strong>/'.$units.' ('.$count.' '.$tense.' lagda) <em>This is \'static\'.</em></p>';
        $static_rater[] .= '</div>';
        $static_rater[] .= '</div>'."\n\n";

        return join("\n", $static_rater);
} else {
      $rater ='';
      $rater.='<div class="ratingblock">';

      $rater.='<div id="unit_long'.$id.'">';
      $rater.='  <ul id="unit_ul'.$id.'" class="unit-rating" style="width:'.$rating_unitwidth * $units.'px;">';
      $rater.='     <li class="current-rating" style="width:'.$rating_width.'px;">Förnärvarande '.$rating2.'/'.$units.'</li>';

      for ($ncount = 1; $ncount <= $units; $ncount++) { // loop from 1 to the number of units
           if(!$voted) { // if the user hasn't yet voted, draw the voting stars
              $rater.='<li><a href="/db.php?j='.$ncount.'&amp;q='.$id.'&amp;t='.$ip.'&amp;c='.$units.'" title="'.$ncount.' av '.$units.'" class="r'.$ncount.'-unit rater" rel="nofollow">'.$ncount.'</a></li>';
           }
      }
      $ncount=0; // resets the count

      $rater.='  </ul>';
      $rater.='  <p';
      if($voted){ $rater.=' class="voted"'; }
      $rater.='>Röster: <strong> '.$rating1.'</strong>/'.$units.' ('.$count.' '.$tense.' lagda)';
      $rater.='  </p>';
      $rater.='</div>';
      $rater.='</div>';
      return $rater;
 }
}
?>

1 个答案:

答案 0 :(得分:0)

我似乎已经通过将 intval 添加到 $ rating1 来解决此临时问题,如下所示:< / p>

$rating1 = @number_format(intval($current_rating/$count,1));
相关问题