Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][SQL] Zapisanie pozycji na podstawie ilości głosów
Forum PHP.pl > Forum > Przedszkole
in5ane
Witam, robię toplistę. Zaciąłem się z resetowanie toplisty. Zerknijcie na poniższy obrazek (zrzut). Chciałbym uzyskać coś takiego, że jak kliknę sobie w skrypcie reset, to żeby w polu lastpos wpisało mi faktyczną ostatnią pozycję w topliście, a ilość głosów zresetowało do zera (to pikuś). Sprawa komplikuje mi się z tymi pozycjami. Czy można coś takiego zrobić w samym SQL? Jeżeli nie, to jak to zrobić za pomocą PHP. Ma ktoś jakiś pomysł?
mortus
  1. UPDATE `toplista` `t1` LEFT JOIN (SELECT @pos:=@pos+1 `pos`, `t2`.* FROM (SELECT @pos:=0) `init`, `toplista` `t2` ORDER BY `t2`.`votes` DESC) `temp` ON `t1`.`id` = `temp`.`id`
  2. SET `t1`.`lastpos` = `temp`.`pos`, `t1`.`votes` = 0;


Pamiętaj, że zapytanie to zadziała prawidłowo tylko wówczas, gdy ktoś rzeczywiście odda głos. Jeśli nie będzie głosów, a będą informacje o poprzednio zajmowanej pozycji, to nie powinieneś tego zapytania wykonywać, bo jego wynik będzie przypadkowy (zależny od wewnętrznych ustawień serwera MySQL).
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.