警告:除零消息

时间:2013-12-07 23:54:07

标签: php

我正在尝试在我的网站上创建评级系统,但是当我输入以下代码时,它会向我发出警告:“警告:在/ home / * / public_html /中除以零第38行 * *

<?php 
 // Connects to your Database 
  include ('config.php');

   //We only run this code if the user has just clicked a voting link
 if ( $mode=="vote") 
 { 

 //If the user has already voted on the particular thing, we do not allow them to vote again    $cookie = "Mysite$id"; 
    if(isset($_COOKIE[$cookie])) 
        { 
        Echo "Sorry You have already ranked that site <p>"; 
        } 

 //Otherwise, we set a cooking telling us they have now voted 
    else 
        { 
        $month = 2592000 + time(); 
        setcookie(Mysite.$id, Voted, $month); 

         //Then we update the voting information by adding 1 to the total votes and adding their vote (1,2,3,etc) to the total rating 
 mysql_query ("UPDATE vote SET total = total+$voted, votes = votes+1 WHERE id = $id"); 
        Echo "Your vote has been cast <p>"; 
        } 
 } 

 //Puts SQL Data into an array
 $data = mysql_query("SELECT * FROM vote") or die(mysql_error()); 

 //Now we loop through all the data 
 while($ratings = mysql_fetch_array( $data )) 
 { 

 //This outputs the sites name 
 Echo "Name: " .$ratings['name']."<br>"; 

 //This calculates the sites ranking and then outputs it - rounded to 1 decimal 
 $current = $ratings[total] / $ratings[votes]; 
 Echo "Current Rating: " . round($current, 1) . "<br>"; 

 //This creates 5 links to vote a 1, 2, 3, 4, or 5 rating for each particular item 
 Echo "Rank Me: "; 
 Echo "<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=1&id=".$ratings[id].">Vote 1</a> | "; 
 Echo "<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=2&id=".$ratings[id].">Vote 2</a> | "; 
 Echo "<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=3&id=".$ratings[id].">Vote 3</a> | "; 
 Echo "<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=4&id=".$ratings[id].">Vote 4</a> | "; 
 Echo "<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=5&id=".$ratings[id].">Vote 5</a><p>"; 
 } 
 ?>

P.S。 如何将检查从使用cookie更改为mysql数据库。我希望它检查数据库,看看这个人是否刚刚评级。

2 个答案:

答案 0 :(得分:3)

第38行:

$current = $ratings[total] / $ratings[votes];

应该是

$current = $ratings['total'] / $ratings['votes'];

更不用说代码中的其他问题了。

答案 1 :(得分:1)

在第38行,您有$ratings[total] / $ratings[votes]。这里的问题是,如果rating数组中的投票数为0,则除以零。

$current = $ratings['votes'] > 0 ? $ratings['total'] / $ratings['votes'] : 0;