Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zapytania sql
Forum PHP.pl > Forum > Przedszkole
masterbx2
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
nospor
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
ritso
podlacze sie pod temat i zapytam czemu ten skrypt jest nieoptymalny? mysle, ze taka wiedza kazdemu sie przyda smile.gif
nospor
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ć.
ciekawskiii
ritso, dlatego, ze to tylko jedna glupia opcja ocen i 3 zapytania do bazy, takie cos powinno byc w jednym zapytaniu
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.