![]() |
![]() |
![]()
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) |
|
|
![]() |
![]()
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 |
|
|
![]()
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 |
|
|
![]()
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?
|
|
|
![]()
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 ? |
|
|
![]()
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 :)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 10:11 |