1
我有一个使用下面的公式来生成评级平均评级系统:评级系统将无法正常平均
((旧评分*旧时代金额)+新等级)/新评量
但是,如果额定电流为3,它被评为一次,当我评分3的时候,说,新的评级是2.5
什么是这里的错误?这是完整的代码。
<?php
session_start();
include("lib/db.php");
$db = new DBConnect;
if(isset($_POST['rating']) && is_numeric($_POST['rating']) && is_numeric($_POST['story']))
{
if($_POST['rating'] > 5 || $_POST['rating'] < 1){die("INVALID RATING");}
$rating = mysql_real_escape_string($_POST['rating']);
$story = mysql_real_escape_string($_POST['story']);
$c = $db->query("SELECT * FROM cdb_stories WHERE id=$story");
$c = mysql_fetch_array($c);
$u_name = mysql_real_escape_string($_SESSION['logged_in']);
$uid = $db->query("SELECT id FROM cdb_users WHERE username='{$u_name}'");
if(mysql_num_rows($uid) < 1){die("NOT LOGGED IN");}
$uid = mysql_fetch_array($uid);
$ratingd = $db->query("SELECT * FROM cdb_ratings WHERE userid='{$uid['id']}'");
if(mysql_num_rows($ratingd) > 0)
{
$ratingd = mysql_fetch_array($ratingd);
$new_rate = (($c['rating']*$c['rating_amt'])-$ratingd['rating']+$rating)/$c['rating_amt'];
$db->query("UPDATE cdb_stories SET rating={$new_rate} WHERE id={$story}");
$db->query("UPDATE cdb_ratings SET rating={$rating} WHERE userid='{$uid['id']}'");
die();
}
$new_num = $c['rating_amt']+1;
$new_rate = (($c['rating']*$c['rating_amt'])+$rating)/$new_num;
$db->query("UPDATE cdb_stories SET rating_amt={$new_num}, rating={$new_rate} WHERE id={$story}");
$db->query("INSERT INTO cdb_ratings VALUES({$uid['id']},{$rating},{$story})");
}
else
{
die("INVALID FIELDS");
}
?>
$ NEW_RATE =(($ C [ '等级'] * $ C [ 'rating_amt']) - $ ratingd [ '等级'] + $等级)/ $ C [ 'rating_amt'];是更改评级计算。如果你往下看,你会发现原来的一个。 – CommunistPancake 2011-12-17 23:58:38
@CommunistPancake:我删除了部分来自我的答案,谢谢指出。我必须承认,我有问题,阅读代码,所以我想这导致问题的原因找到正确的部分。 – hakre 2011-12-18 00:07:25