Средний рейтинг
В базе 4 и 5 среднее выводит 3.5 вместо 4.5
<?
$query="SELECT * FROM user_review WHERE id_user = '$id' AND rating > 0";
$run= mysqli_query($con,$query);
while ( $row=mysqli_fetch_array($run)){
$count=mysqli_num_rows($run);
$rating += $row['rating'];
var_dump($rating);
$rating = $rating / $count;
}
?>
int(4) int(7)
Средний рейтинг 3.5
Ответы (1 шт):
Автор решения: Zhihar
→ Ссылка
просто для интереса - а почему среднее не вычислить уже в SQL запросе через AVG?
https://www.w3schools.com/sql/func_mysql_avg.asp
https://metanit.com/sql/mysql/4.5.php
А касательно вашего кода - смотрите какой треш происходит:
while ( $row=mysqli_fetch_array($run)){
$rating += $row['rating'];
$rating = $rating / $count;
}
т.е. для 4, 5 - происходит следующее
rating = 0 + 4 = 4
rating = 4 / 2 = 2
rating = 2 + 5 = 7
rating = 7 / 2 = 3.5
Зачем вы делите внутри цикла?!!!
Ваш код должен тогда быть таким:
$count=mysqli_num_rows($run);
$total = 0
while ( $row=mysqli_fetch_array($run)){
$total += $row['rating'];
}
$rating = $total / $count