2013-12-07 74 views
-1

我正在嘗試在我的網站上創建評分系統,但是當我輸入以下代碼時,它會給我發出警告,「警告:在/ 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>"; 
} 
?> 

PS 如何將使用cookie的支票更改爲mysql數據庫。我希望它檢查數據庫以查看該人是否剛剛評級。

+0

你不能簡單地通過mysql存儲改變cookie。您需要某種方式將用戶與他們的db記錄關聯起來(例如登錄系統)。 –

回答

1

在線38上,您有$ratings[total]/$ratings[votes]。這裏的問題是,如果rating數組中的投票數量爲0,那麼您除以零。

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

+0

謝謝@Navarr – user3078799

+0

如果你喜歡它,@ user3078799,你應該將它標記爲答案。代碼中還有一些其他問題,包括潛在的SQL注入和其他安全問題。如果你關心這一點,並且正在尋找該領域的任何職業,我建議閱讀[PHP The Right Way](http://www.phptherightway.com/)。 – Navarr

3

第38行:

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

也許應該

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

何況在代碼中的其他問題。