Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> zapytania sql, srednia ocen
masterbx2
post
Post #1





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 1.04.2011

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


Witam! Mam problem z jednym ze skryptow.

otoz, na swojej stronce mam opcje glosowania na ktorej kazdy uzytkownik moze oddac glos na rozne obrazki.

baza wyglada tak: ocena / user_login / link_id / plus / minus (w zaleznosci od glosu dodaje do tabeli 1 w kolumnie plus lub minus)

pod plikiem wyswietlane sa glosy na tak (plus), na nie (minus) oraz laczna ilosc glosow na dany plik.

wyswietlam je w ten oto sposob:
  1. $query = mysql_query("SELECT * FROM oceny WHERE plus = 1");
  2. $ile = mysql_num_rows($query);
  3. echo 'Plusy ('.$ile.')' ;
  4.  
  5. echo'<br />';
  6.  
  7. $query = mysql_query("SELECT * FROM oceny WHERE minus = 1");
  8. $ile = mysql_num_rows($query);
  9. echo 'Minusy ('.$ile.')' ;
  10.  
  11. echo'<br />';
  12.  
  13. $query = mysql_query("SELECT * FROM oceny WHERE link_id = '".$_GET['id']."'");
  14. $ile = mysql_num_rows($query);
  15. echo 'wszystkie oceny ('.$ile.')' ;


chcialbym to teraz troche zmodyfikowac i dodac "srednia ocen" wyzarana w % czyli musze podzielic liczbe plusow z pierwszego zapytania przez laczna sume glosow z ostatniego zapytania. jednak nie mam pojecia jak to przelac na skrypt.

z gory dzieki
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




Pomijajać już fakt, że Twoj skrypt jest totalnie nie optymalny to nie umiesz podzielić jednej liczby przez drugą i pomnożyć przez 100?

Dla każdej zmiennej zamiast zawsze dawac nazwię $ile to dawaj nazwe $ilePlus, $ileMinus,$ileAll i sobie teraz dziel

$srednia = $ilePlus/$ileAll*100;

Przecież to jest nawet poniżej poziomu przedszkolnego a ty pytasz o to w dziale PHP... przenosze


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

"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
ritso
post
Post #3





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 4.04.2011

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


podlacze sie pod temat i zapytam czemu ten skrypt jest nieoptymalny? mysle, ze taka wiedza kazdemu sie przyda smile.gif
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




1) Do wyliczenia liczby rekordów służy COUNT w mysql a nie pobranie wszystkich rekordów na serwer i dopiero ich policzenie. Wyobraź sobie że masz milion rekordów i pobierasz je wszystki tylko po to by je policzyć...
2) Wszystkie rekordy to przecież suma plusów oraz minusów. Po co więc biegać po to jeszcze raz do bazy?
Fakt, tutaj na wszystkie jest jakiś dziwny warunek, którego nie ma przy plusach ani minusach ale podejrzewam, że to jest zwykły błąd loginczy autora
3) Tak wieć pozostają dwa zapytania na plus i minus. Można to wyciągnąć w jednym zapytaniu, tworząc COUNT z warunkiem - ale to już inna bajka i można sobie darować.
Powód edycji: [nospor]:


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

"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
ciekawskiii
post
Post #5





Grupa: Zarejestrowani
Postów: 467
Pomógł: 39
Dołączył: 7.11.2010
Skąd: Raz tu, raz tam

Ostrzeżenie: (30%)
XX---


ritso, dlatego, ze to tylko jedna glupia opcja ocen i 3 zapytania do bazy, takie cos powinno byc w jednym zapytaniu


--------------------
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: 19.08.2025 - 10:42