Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql + php] prosba o pomoc czyli jak to zrobic ?
Forum PHP.pl > Forum > Przedszkole
zbynio4
Witam, mam pewien problem i nie za bardzo wiem jak sie za niego zabrac.
Jest prosta tabela :
id -> user -> pkt -> poz1 -> poz2 -> poz3-> poz4
czyli poprostu tabela z rankingiem graczy (ok 3000 rek.)
pkt - laczna ilosc punktow za zajmowane pozycje poz1 ~ poz4.

Problem:
Rekordy wyswietlaja sie od usera majacego najwiecej pkt w dol.
Jest skrypcik stronicujacy (zreszta z forum) i wszystko niby jest OK ale no wlasnie,
chce dodac wyszukiwarke dla graczy -> w sumie sprawa prosta tylko mam problem z pozycja gracza.
Zalozmy ze gracz ma 101 pozycje w rankingu (ORDER BY user DESC), przy stronicowaniu wyswietlam kolejne pozycje i jest ok ale przy wyszukaniu konkretnego gracza nie potrafie wyswietlic jaka ma pozycje w rankingu (przykladowo 101).
Wyswietlanie tylko jego punktow itd traci sens jezeli gracz nie zna swojej pozycji w rankingu.
Prosze o jakas wskazowke badz przyklad jak to zrobic (najlepiej dla adodb).
Z gory dziekuje za pomoc i pozdrawiam.
erix
hmm...
na ID gracza (jesli 101):

  1. SELECT * FROM userzy WHERE ID > 100 ORDER BY user LIMIT 100
zbynio4
jeszcze raz - > id kazdy user ma inne (auto_increment) gracz o numerze id 101 wcale nie musi zajmowac 101 miejsca w rakningu ktorego wykladnikiem jest pole : pkt czyli im wiecej punktow tym wyzsza pozycja w rankingu.

WYswietlajac ich po np 50 na tronie zaden problem jest przy pomocy petli ponumerowac kolejne pozycje.
Problemem jest w takim rozwiazaniu wyszukanie konkretnego grcza i wskazanie jego aktualnej pozycji w rankingu (czyli wg pola pkt a nie id).

Teoretycznie mozna by stworzyc dodatkowe pole w tabeli i np w jakis nie znany mi zreszta sposob po kazdej aktualizacji ktorego kolwiek z rekordow (kilkanascie razy dziennie) aktualizowac jego wartosc i w nim wyliczac rzeczywista pozycje gracza (id) dla jego wartosci puktowej (pkt) hah to tylko teoretycznie bo gdybym wiedzial to bym nie pytal biggrin.gif
Byc moze powinienem stworzyc osobna tabele w ktorej zapisywalbym tylko pozycje dla danego usera w rankingu questionmark.gif?
NIe wiem ale jestem pewien ze ktos wskaze mi wlasciwa droge biggrin.gif
piotrekkr
pytanie pobiera ile jest wszystkich graczy :
  1. SELECT COUNT(*) FROM `TABELA`


Teraz pytanko ktore pobiera ilesc punktow gracza o podanym id

  1. SELECT `pkt` FROM `TABELA` WHERE `id`=ID_GRACZA;


JAK JUZ MASZ ILE ON MA PUNKTOW TO PISZESZ ZAPYTANIE :
  1. SELECT COUNT(*) FROM `TANELA` WHERE `ptk`<ILOSC_PUNKTOW_GRACZA


No i od wszystkich graczy odejmujesz ilosc graczy z mniejsza iloscia punktow i masz pozycje tak mi sie przynajmiej wydaje tongue.gif

heh musisz jeszcze uwzglednic wersje kiedy kilku graczy ma te sama ilos punktow
zbynio4
dziala ok .. jednak jak pisales jest problem gdy kilku userow ma te sama wartosc punktow ... aczkolwiek mozna sie uprzec ze pokazuje rzeczywista pozycje usera majacego taka sama ilosc pt ... byc moze powinienem zapodac jeszcze dodatkowe sortowanie po ilosci miejsc pierwszych itd ... ale ogolnie rzecz biorac dzieki za pomoc biggrin.gif
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.