Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Sortowanie
-ThenesyT-
post
Post #1





Goście







Witam

Mam pewien problem do rozwiazania i chcialbym prosic was o podpowiedz jak go rozwiazac.
Wiec tak mam tabele Mysql-u gromadzaca dane lista_gier_id, uzytkownik_id, gra_id, kolejnosc_gry int gdzie zapisana jest nr pozycji danej gry.

Formularz wyglada nastepujaco:

| Kolejnosc | Nazwa_gry | do_gory_o_1_poz | na_dol_o_1_poz | Kasuj |
[1] Jakas nazw /\ \/ X
. . . . .
[100] Jakas nazw /\ \/ X

Problem polega na tym ze uzytkownik zmienia kolejnosc danej gry wpisujac w polu kolejnosc (jest inputem typu text value kolejnosc_gry) inne miejsce danej gry np. zmienic kolejnosc gry z 100 na 1 itd. Jak by ktos mi opisal jak to by rozwiazal poniewaz sam juz piszac ten skrypt niezle sie zakrecilem i nie wiem czy dobra metode obralem
Z gory dzieki .
Pozdro
ThenesyT
Go to the top of the page
+Quote Post
Apo
post
Post #2





Grupa: Zarejestrowani
Postów: 426
Pomógł: 1
Dołączył: 2.10.2005

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


Niewiem dokładnie o co ci chodzi. Ale możesz użyć polecenia ORDER BY w sql. I wtedy możesz skasować pole kolejnosc_gry.
Przykład:

  1. <?php
  2. $query1 = 'SELECT lista_gier_id, uzytkownik_id, gra_id FROM tabele ORDER BY lista_gier_id'; ///// sortuje według id od 1
  3. $query2 = 'SELECT lista_gier_id, uzytkownik_id, gra_id FROM tabele ORDER BY lista_gier_id D
    ESC'
    ; ///// sortuje według id od największego do najmniejszego
  4.  
  5. ?>

itd ...
pzdro
Go to the top of the page
+Quote Post
kszychu
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


Ja to widzę tak:
przy każdej grze dajesz select/input z mozliwoscią wyboru/wpisania miejsca.
reszte, czyli zmiane miejsca musisz zrobić w bazie.
Załóżmy, że x to miejsce zajmowane dotychczas przez grę a y to nowe miejsce, podane przez użytkownika.
Musisz zrobić dwa zapytania:
- zmiana miejsc pozostałych pozycji:
  1. UPDATE tabela SET kolejnosc_gry = kolejnosc_gry + 1 WHERE kolejnosc_gry BETWEEN 'x' AND 'y'

- zmiaqna miejsca danej gry:
  1. UPDATE tabela SET kolejnosc_gry = 'y' WHERE kolejnosc_gry = 'x'


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
Go to the top of the page
+Quote Post
-ThenesyT-
post
Post #4





Goście







Cytat(kszychu @ 2006-01-18 14:25:31)
Ja to widzę tak:
przy każdej grze dajesz select/input z mozliwoscią wyboru/wpisania miejsca.
reszte, czyli zmiane miejsca musisz zrobić w bazie.
Załóżmy, że x to miejsce zajmowane dotychczas przez grę a y to nowe miejsce, podane przez użytkownika.
Musisz zrobić dwa zapytania:
- zmiana miejsc pozostałych pozycji:
  1. UPDATE tabela SET kolejnosc_gry = kolejnosc_gry + 1 WHERE kolejnosc_gry BETWEEN 'x' AND 'y'

- zmiaqna miejsca danej gry:
  1. UPDATE tabela SET kolejnosc_gry = 'y' WHERE kolejnosc_gry = 'x'


Wielkie dzieki za podpowiedz wlasnie chodzilo mi o te zapytania sql-owe troche dodalem i napisze jak to umnie dzial moze komus sie przyda.


dla x>y gdy miejsce zajmowane dotychczas jest wieksze od pozycji zmienianej

  1. UPDATE tabela SET kolejnosc_gry = kolejnosc_gry + 1 WHERE kolejnosc_gry BETWEEN 'y' AND 'x'

Kod
$i = $x+1;

  1. UPDATE tabela SET kolejnosc_gry ='y' WHERE kolejnosc_gry = '" . $i . "' AND id_zmienianej_gry = 'id_zmienianej_gry'
'

analogicznie gdy x<y tylko zmieniamy

  1. UPDATE tabela SET kolejnosc_gry = kolejnosc_gry - 1 WHERE kolejnosc_gry BETWEEN 'x' AND 'y'

Kod
$i = $x-1;

tu bez zmian
  1. UPDATE tabela SET kolejnosc_gry ='y' WHERE kolejnosc_gry = '" . $i . "' AND id_zmienianej_gry = 'id_zmienianej_gry'
'

Dziala elegancko
Pozdrawiam
ThenesyT
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 04:35