Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Automatyczny UPDATE rankingu gracza w tabel
fpierf
post
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 25.03.2009

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


Witam ,
mam tabele zawodnikow "zawodnicy" skladajaca sie miedzy innymi z pol id,nazwisko,punkty. Teraz zaszla potrzeba dodania pola miejsce, ktore bedzie sie uaktualnialo automatycznie. Dane wprowadzam przez formularz w ktorym podaje tylko ilosc zdobytych punktow i id gracza. Do tej pory wyswietlalem liste zawodnikow sortujac ja wedlug punktow (ORDER BY punkty) dodajac numeracje rosnaco przez ($lp=1 ... $lp++). Teraz potrzebuje "wyciagnac" aktualne miejsce gracza z tabeli, zeby uzyc je w innych tabelach... nie mam jednak pojecia jak do tego sie zabrac (IMG:style_emoticons/default/sad.gif)


ID | NAZWISKO | PUNKTY | MIEJSCE
1 | nazwisko1 | 12 | 2
2 | nazwisko2 | 10 | 3
3 | nazwisko3 | 19 | 1
4 | nazwisko4 | 2 | 4

To co jest na czerwono powinno sie aktualizowac automatycznie, czyli jak nazwisko1 zdobedzie 8pkt i zostanie to przeslane przez formularz , tabela powinna wygladac tak :

ID | NAZWISKO | PUNKTY | MIEJSCE
1 | nazwisko1 | 20 | 1
2 | nazwisko2 | 10 | 3
3 | nazwisko3 | 19 | 2
4 | nazwisko4 | 2 | 4

Z gory dziekuje za pomoc ... (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Uzyj triggerów
google -> mysql create trigger
Go to the top of the page
+Quote Post
fpierf
post
Post #3





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 25.03.2009

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


Poczytalem o tych triggerach , ale za bardzo tego nie kumam... Rozumiem mniej wiecej jak zrobic UPDATE pola , ale nie wiem jak mialo by sie to zrobic automatycznie po zliczeniu punktow...

Moze jakas inna metoda, albo dokladniejszy opis triggerow, jak sie inaczej nie da (IMG:style_emoticons/default/winksmiley.jpg) , dzieki
Go to the top of the page
+Quote Post
wookieb
post
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




A co z podstawowych informacji o triggerach potrzebujesz co nie jest zawarte w manualu?
Go to the top of the page
+Quote Post
fpierf
post
Post #5





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 25.03.2009

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


Zrobilem to w ten sposob :
Kod
$lista_posortowana = "SELECT id_gracz, nick, punkty FROM gracze ORDER BY punkty DESC";
$poszukiwany= $_POST['nick'];
$wynik = mysql_query($lista_posortowana) or die (mysql_error());
$poz=0;
while ($pozycja=mysql_fetch_row($wynik))
{
$poz++;
for ($i=0;$i<mysql_num_fields($wynik); $i++){
     if ($poszukiwany==$pozycja[$i])
  {
   echo "Gracz <i> ".$poszukiwany."</i> jest<i> ".$poz."</i> w rankingu.<br>";
   $pozycja_zawodnika=$pozycja;
     mysql_query("UPDATE gracze SET ranking = $poz WHERE nick = '".$_POST['nick']."'");

   }
}
}
mysql_free_result($wynik);

i wszystko dziala jak nalezy, ale nie przemyslalem jednej sprawy... gdy na przyklad gracz o id_1 jest pierwszy w rankingu , a po uaktualnieniu gracz o id_2 wskoczy na 1 miejsce, to gracz id_2 jest pierwszy w rankingu , ale gracz id_1 tez pozostaje pierwszy...
i teraz pytanie, jak UPDATE-owac pozostalych graczy, ktorzy nie sa podanie w formularzu ?
Go to the top of the page
+Quote Post
thek
post
Post #6





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Przyjrzyj się na czym polega upgrade pozycji. To zamiana miejscami wszystkich graczy od dawnej pozycji do nowej pozycji. Podam przykład byś zauważył co trzeba zrobić...
a) Miał gracz 100pkt (7miejsce)
b) dostał 5pkt (wskoczył na 4 miejsce),
c) wszyscy, którzy wcześniej byli od miejsca 4 do 6 (włącznie) spadają o 1 miejsce w dół.

Chyba już wiesz co należy zrobić :)

Żebym nie zapomniał. Uważaj na to co robisz przy update. Musisz wykluczyć własnie przeniesionego wyżej usera z zapytania update, bo możesz go przy okazji także przenieść o oczko w dół (IMG:style_emoticons/default/winksmiley.jpg) Tutaj warto zastosować dodatkowo id <> id_przenoszonego_usera (IMG:style_emoticons/default/smile.gif)
Powód edycji: [thek]: musiałem wyłączyć emoty :)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 10:11