Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] [MySQL] Średnia ważona
valtuilpl
post 15.01.2014, 13:43:35
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 15.01.2014

Ostrzeżenie: (0%)
-----


Witam!
Tworząc e-dziennik wpadłem na problem żeby obliczyć średnią ważoną z liczb z bazy MySQL.
część kodu:
  1. while ( $row = mysql_fetch_row($wynik) ) {
  2. $oceny = array($row[1]);
  3. $wagi = array(1,1);
  4. $sumaWazona = 0;
  5. foreach( $oceny as $klucz => $ocena ){
  6. $sumaWazona += $ocena * $wagi[$klucz];
  7. $sumaWag += $wagi[$klucz];
  8. }
  9. $wynik = $sumaWazona / $sumaWag;
  10.  
  11. echo $wynik;
  12.  
  13. }

tabela w MySQL:

uczen | kartkówka
________________
uczen01 5,5,4,3,4
------------------------
uczen02 4,3,5,4,4
Go to the top of the page
+Quote Post
Kshyhoo
post 15.01.2014, 13:58:57
Post #2





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Wszystko fajnie, tylko jakie jest pytanie? I dlaczego identyczne 3 watki?


--------------------
Go to the top of the page
+Quote Post
freemp3
post 15.01.2014, 14:10:03
Post #3





Grupa: Zarejestrowani
Postów: 458
Pomógł: 74
Dołączył: 6.09.2008
Skąd: Miechów / Kraków

Ostrzeżenie: (0%)
-----


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?


--------------------
Niemożliwym jest stworzenie czegokolwiek idiotoodpornego, ponieważ idioci są wyjątkowo pomysłowi.

http://aroch.pl
https://themeforest.net/user/aroch
http://astroblog.aroch.pl
http://www.koszulki.aroch.pl
Go to the top of the page
+Quote Post
valtuilpl
post 15.01.2014, 14:25:14
Post #4





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 15.01.2014

Ostrzeżenie: (0%)
-----


Problem jest w tym że kod:
  1. $oceny = '5,5,4,3,4';
  2. $oceny = array($oceny);
  3. $wagi = array(1,1);
  4. $sumaWazona = 0;
  5. foreach( $oceny as $klucz => $ocena ){
  6. $sumaWazona += $ocena * $wagi[$klucz];
  7. $sumaWag += $wagi[$klucz];
  8. }
  9. $wynik = $sumaWazona / $sumaWag;

oblicza średią ważoną a zamieniając $oceny na te z bazy danych (5,5,4,3,4 typu string) juz nie działa.
@freemp3 1. Zaraz sprawdze 2 pokazałem tylko pierwszą tabele
Go to the top of the page
+Quote Post
Crozin
post 15.01.2014, 14:37:58
Post #5





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.11.2019 - 07:14