Witam!
Tworząc e-dziennik wpadłem na problem żeby obliczyć średnią ważoną z liczb z bazy MySQL.
część kodu:
while ( $row = http://www.php.net/mysql_fetch_row($wynik) ) { $oceny = http://www.php.net/array($row[1]); $wagi = http://www.php.net/array(1,1); $sumaWazona = 0; foreach( $oceny as $klucz => $ocena ){ $sumaWazona += $ocena * $wagi[$klucz]; $sumaWag += $wagi[$klucz]; } $wynik = $sumaWazona / $sumaWag; http://www.php.net/echo $wynik; }
Wszystko fajnie, tylko jakie jest pytanie? I dlaczego identyczne 3 watki?
Na podstawie kodu i informacji które zamieściłeś:
1. Zamiast tworzyć tablicę z ocen, trzeba ją rozbić (explode)
2. Jest tylko jeden typ ocen, tylko kartkówka? Na jakiej podstawie jest określana waga, kolejności ich wystawienia?
3. Tak jak napisał Kshyhoo, w czym w ogóle jest problem?
Problem jest w tym że kod:
$oceny = '5,5,4,3,4'; $oceny = http://www.php.net/array($oceny); $wagi = http://www.php.net/array(1,1); $sumaWazona = 0; foreach( $oceny as $klucz => $ocena ){ $sumaWazona += $ocena * $wagi[$klucz]; $sumaWag += $wagi[$klucz]; } $wynik = $sumaWazona / $sumaWag;
Przede wszystkim popraw swoją bazę danych, ponieważ trzymanie ocen w formie tekstu scalonego przecinkami jest kompletnie bez sensu w tym przypadku. Skorzystaj z normalnej relacji jeden-do-wielu.
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)