Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PHP+MySQL - Statystyki
Forum PHP.pl > Forum > PHP
konradmm
Witam
Napisalem prosty plugin do serwera gry ktory posiadam, który przy kazdej śmierci dodaje wiersz do tabeli w stylu:
Kod
id     killer     victim     weapon     distance     hitbox     date

Teraz chcialbym dodac statystyki gracza na stronie, jednak moje pytanie brzmi, jak moge to zrobic w najmniej obciazajacy sposob.
Pierwsza mysl, zeby dodac cos w desen:
  1. $headshotquery = mysql_query("SELECT * FROM Death_Handler WHERE killer=\"".$_GET['id']."\" AND bodypart=\"hitbox\" ORDER BY id DESC");

Jednak hitboxów trochę jest... Skrypt na otwarcie jedenj strony mialby okolo 27 polecen query, co jest dosyc duzo.

Jak moge to zrobic efektywniej ?

Chodzi mi o to by miec "zliczanie" czyli mysqli_numrows wraz z wyswietlaniem ostatnich zabojstw.

Prosze o pomoc/wskazowke wink.gif

@edit1:
Latwiej byloby oproznic "AND bodypart..." z query serwera, ale jak to pozniej zliczyc w php?
Czy jakos w stylu petli, zeby sprawdzalo kazdą śmierć gracza i w zaleznosci od tego jaki jest bodypart dodawalo do aktualnej wartosci?

@edit2:
no najlatwiej to by bylo zrobic w bazie druga tabele gdzie kazdy gracz ma statystyki: headshot, torso, leg, itp... ale na to tymczasowo za pozno i szukam rozwiazania zeby dodac takie statystyki do "logow z zabojstw"
Pyton_000
Co chcesz konkretnie wyświetlać.

Możesz wynik cache-ować i odświeżać np. co 10 min, wtedy nie będzie takiego bólu.
pmir13
Po co przesyłać wszystko i liczyć w PHP, skoro mysql sam może to zrobić i to dużo wydajniej, przy odpowiednich indeksach.
Od tego są w mysqlu GROUP BY i funkcje agregujące. Czyli na przykład:

  1. SELECT killer, hitbox, COUNT(*) AS kills
  2. FROM Death_Handler
  3. WHERE killer = 1
  4. GROUP BY hitbox


Przykład na sqlfiddle.
konradmm
Cytat(pmir13 @ 15.04.2014, 20:51:33 ) *
Po co przesyłać wszystko i liczyć w PHP, skoro mysql sam może to zrobić i to dużo wydajniej, przy odpowiednich indeksach.
Od tego są w mysqlu GROUP BY i funkcje agregujące. Czyli na przykład:

  1. SELECT killer, hitbox, COUNT(*) AS kills
  2. FROM Death_Handler
  3. WHERE killer = 1
  4. GROUP BY hitbox


Przykład na sqlfiddle.


W sumie nie znałem takiego argumentu GROUP BY i widze ze by to ladnie pasowalo.
Jednakze jak bylbym w stanie okreslic ILOSC przykladowo Headshotow ?
Cos jak result['headshot'] (gdzie headshot to nazwa hitboxa) ?

@Pyton:
co to twojego postu zalezy mi na dwoch "stronach".
Jedna przykladowo profil.php?id=NICK

gdzie bylyby zawarte wszelkie informacje (ostatni kill + info, suma wszystkich killi, przykladowo headshoty - % wszystkich killi (dla kazdego hitboxa), ilosc killi z konkretnych broni itp itd.). Tego typu statystyki ;]
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.