Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sortowanie
Forum PHP.pl > Forum > Przedszkole
ThenesyT
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
Apo
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
kszychu
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'
ThenesyT
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
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.