Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]wyświetlanie średniej w pętli
-jusko-
post
Post #1





Goście







Witam,

Mam problem z wyświetleniem rekordów na podstawie wyliczonej średniej.

Kod wygląda tak:

  1. $query_oceny = "SELECT * FROM tabela ORDER BY ".$srednia." DESC LIMIT 10";
  2. $result = mysql_query ($query_oceny);
  3. while ($row = mysql_fetch_array($result)){
  4.  
  5. $up = ($row[12]*1)+($row[13]*2)+($row[14]*3)+($row[15]*4)+($row[16]*5);
  6. $down = ($row[12]+$row[13]+$row[14]+$row[15]+$row[16]);
  7. if ($down == 0) echo '0';
  8. else
  9. $srednia = $up /$down;
  10.  
  11. $body .='
  12. <li>
  13. ...
  14. '.$srednia.'
  15. </li>';}


Średnią wylicza dobrze, ale w pętli dla każdego rekordu pokazuje ten sam wynik.

Pozdr
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




1) Jaki ten sam wynik? 0? W takim razie to if ($down == 0) echo '0'; zawsze = 0
Inny? W takim razie $up and $down zawsze wynosą tyle samo

2) $query_oceny = "SELECT * FROM tabela ORDER BY ".$srednia." DESC LIMIT 10";
Chyba chciales sortowac po polu wiec masz sortowac po polu a nie po zapodanej wartosci....
Tak ma byc:
$query_oceny = "SELECT * FROM tabela ORDER BY NAZWA_POLA_PO_KTORYM_CHCESZ_SORTOWAC DESC LIMIT 10";


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
-jusko-
post
Post #3





Goście







1) W rekordach gdzie oceny już są wpisane to średnia wyliczana i wyświetlana jest prawidłowo. Jeśli jest jakiś rekord gdzie ocen nie ma w ogóle to chciałbym aby wyświetlało 0 a wyświetla wynik z innego rekordu.

2) Sortować chce wg. średniej, która nie jest zapisywana do żadnego pola, tylko wyliczana na podstawie pól gdzie znajdują się poszczególne oceny. Dlatego chciałbym sortować według zmiennej $srednia.



Rekord z tabeli wygląda tak:

id nazwa ... ... ... ... ... rate1 rate2 rate3 rate4 rate5

Pola rate (odpowiedniki ocen 1-5) zawierają ilość ocen.
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




ad1) Widac $down nie rowna sie 0 smile.gif
ad2) Poraz kolejny ci tlumacze ze zle to robisz. W tej chwili sortujesz po wartosci i to na dodatek ktorą dopiero pozniej wyliczasz. To jest podwojnie ŹLE zrobione.
Skoro chcesz sortowac po sredniej z pol, to wlasnie te srednia jako wyliczenia na ZYWO masz wstawic do ORDER BY.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
-jusko-
post
Post #5





Goście







Problem nr. 1 rozwiązałem, zostało mi sortowanie
Go to the top of the page
+Quote Post
-jusko-
post
Post #6





Goście







Mógłbyś podpowiedzieć w jaki sposób wyliczyć średnią na żywo?
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




W tym temacie:
Temat: MySQLPHPObliczenie sredniej dla kilku pol
juz ci to wyjasniono (post Sephirusa)

Moglbys czytac wlasne tematy


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
-jusko-
post
Post #8





Goście







Wielkie dzięki! rozwiązane, rzeczywiście zapomniałem o tym temacie. Pozdr!

Go to the top of the page
+Quote Post
-Jusko-
post
Post #9





Goście







Jeszcze miałbym jedno pytanie:

  1. (rating1*1+rating2*2+rating3*3)/(rating1+rating2+rating3) AS `average`


Jak average zapisac jako zmienną?
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




twoje avarage, jak i inne pola ktorych uzywasz, znajduje sie w $row


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
-jusko-
post
Post #11





Goście







Chciałbym zrobić funkcję która zamiast liczb wyświetlałaby gwiazdki:

  1.  
  2. function rate_stars($average) {
  3. $average = questionmark.gif?;
  4. if ($average == 0) return '';
  5. elseif ($average >= 1 and $average < 2) return '*';
  6. elseif ($average >= 2 and $average < 3) return '**';
  7. elseif ($average >= 3 and $average < 4) return '***';
  8. elseif ($average >= 4 and $average < 5) return '****';
  9. elseif ($average == 5) return '*****';}
  10.  


Mniej więcej coś takiego, ale nie wiem jak określić $average, z $row nie wychodzi bo funkcja jest poza pętlą.
Go to the top of the page
+Quote Post
nospor
post
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
bo funkcja jest poza pętlą.
No i prawidlowo... deklaracja funkcji ma byc poza petlą. To wywolanie funkcji ma byc w petli


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Turson
post
Post #13





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


echo rate_stars($srednia $row czy coś tam innego) questionmark.gif
Go to the top of the page
+Quote Post
-jusko-
post
Post #14





Goście







Jak w funkcji obliczyć $average, bądź pobrać wynik z zapytania?
Go to the top of the page
+Quote Post
Turson
post
Post #15





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Możesz przekazać jako parametr funkcji
Go to the top of the page
+Quote Post
-jusko-
post
Post #16





Goście







a dokładniej jak to powinno wyglądać,

Jak prawidłowo powinna wyglądać zmienna $average wewnątrz funkcji?
Go to the top of the page
+Quote Post
Turson
post
Post #17





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


normalnie przekazujesz zmienną do funkcji i tam robisz z nią co chcesz, z resztą tak jak napisałeś w poście #11 oprócz linii 3
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 Aktualny czas: 20.08.2025 - 13:38