Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ajax] Przeciąganie wierszy w tabeli
Forum PHP.pl > Forum > XML, AJAX > AJAX
mefjiu
Witam serdecznie,
mam skrycik do przeciągania wierszy w tabli, ale chciałbym zrobić aby dane się zapisywały.
I tu pojawiają się schody, chciałbym to zrobić jak najbardziej optymalne:
mój znajomy wymyślił 3 opcje:

- w bazie danych wszystkie pozycje są numerowane po kolei od 1 do n. Przy zamianie pozycji np. z 5 na 2 wykonują się dwa zapytania – pierwsze ustawia order=2 do przesuwanej pozycji, a drugie zapytanie ustawia order=order+1 where order>=2 and order<5
minusem takiego rozwiązania jest to, że przy dodawaniu i usuwaniu trzeba pilnować, żeby kolejność się zawsze zgadzała i nie było pustych pozycji

- przy sortowaniu przesyłane są nowe pozycje wszystkich rekordów (masa zapytań przy większej ilości rekordów)

- w bazie danych do każdej nowej strony przydzielany jest kolejny, unikalny order, ale za każdym razem większy od poprzedniego (np. time()). Przy sortowaniu przesyłana jest informacja o id elementu przesyłanego i o ile pozycji w którą stronę się przesunął.
Po stronie serwera przy sortowaniu wykonywane są zamiany sąsiadujących orderów.
Ilość zapytań przy sortowaniu też dość znaczna, ale zależy od tego o ile pozycji przesuwa się stronę.



Mnie natomiast nie satysfakcjonuje żadne rozwiązanie :-)
Potrezbuje czegoś naprawdę optymalnego, aby nie zawalało serwera itp.

Czy ktoś z kolegów programistów ma jakiś pomysł.

Przykład takiego skryptu: http://www.isocra.com/2008/02/table-drag-a...-jquery-plugin/

Mój skrypt jest pisany od podstaw ale to tylko przykład aby wiadomo było o czym mówię :-)

Czekam na każdy pomysł.
Z góry dziękuje i pozdrawiam.
erix
Cytat
Przy sortowaniu przesyłana jest informacja o id elementu przesyłanego i o ile pozycji w którą stronę się przesunął.
Po stronie serwera przy sortowaniu wykonywane są zamiany sąsiadujących orderów.
Ilość zapytań przy sortowaniu też dość znaczna, ale zależy od tego o ile pozycji przesuwa się stronę.

To zrób grupowanie zapytań. winksmiley.jpg Masz tu dwa wyjścia: zapisujesz wszystkie operacje do tablicy i po kliknięciu na zapisz dane są utrwalane (zmiany lecą w jednej porcji). Drugie, to przesłanie nowej pozycji wszystkich rekordów (jeśli zrobisz wiele zmian, to zostanie przesłane mniej danych).

Hybrydą byłoby przesyłanie a'la drugie rozwiązanie ze sprawdzaniem, czy rekord był faktycznie zmodyfikowany.
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.