![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 313 Pomógł: 5 Dołączył: 22.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
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. |
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
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ń. (IMG:http://forum.php.pl/style_emoticons/default/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. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.09.2025 - 05:22 |