Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Mechanizm zmiany kolejności elementów.
Forum PHP.pl > Forum > PHP
kukix
lWitam.

Zastanawiam się nad mechanizmem, który za pomoca strzałek (góra, dó) pozwoli na zmianę kolejności klikanego elementu.

Przykładowo mamy taką baze MySQL:

  1. ID, NAZWA, KOLEJNOSC
  2.  
  3. 1, Wpis a, 0
  4. 2, Wpis b, 0
  5. 3, Wpis c, 0
  6. 4, Wpis d, 0
  7. 5, Wpis e, 0


Problemem jest to, że jest tutaj dwa wyjątki:
1. Pozycje z bazy moga być kasowane i powstaja luki w kolejności.
2. Baza może być ręczniewedytowana i chciałbym, żeby skrypt działa wtedy poprawnie.


Jak rozplanowac taki mechanizm w php? Kiedyś kiedys robiłem coś takiwego, jednak bywało, że skrypt źle działa i zrezygnowałem z tego.

Prosze o podpowiedzi, ewentualnie jakiś namiar na funkcje.

Pozdr.
styryl
1. Pozycje z bazy moga być kasowane i powstaja luki w kolejności.
- jak skasujesz dany rekord to zrób update na bazie zmniejszając kolejność o 1 wszystkich elementów większych niż element kasowany

SmokAnalog
Lukami w kolejności się nie przejmuj. Z bazy odczytujesz z ORDER BY kolejnosc ASC i żadne luki temu nie przeszkadzają.

Co to znaczy, że baza będzie zarządzana ręcznie? Czy w grę wchodzi też ręczne wstawianie rekordów? Jeśli tak, to najlepiej zrobić jakieś luki w mechanizmie zapisującym, np. co 10. Ja najbardziej lubię tego typu mechanizmy robić w ten sposób, że mam listę elementów i każdy z nich zawiera input hidden będący tablicą, np. "elements[]" (te nawiasy na końcu są ważne). W JavaScripcie sobie zmieniasz kolejność, a do PHP przesyłają się po kolei. I potem już z górki, robisz np. tak:
  1. $step = 10;
  2. $order = 0;
  3. foreach($_POST['elements'] as $id) {
  4. $order += $step;
  5. // UPDATE tabela SET kolejnosc = $order WHERE id = $id
  6. }
kukix
Cytat(SmokAnalog @ 8.08.2013, 09:05:47 ) *
Co to znaczy, że baza będzie zarządzana ręcznie? Czy w grę wchodzi też ręczne wstawianie rekordów? Jeśli tak, to najlepiej zrobić jakieś luki w mechanizmie zapisującym, np. co 10. Ja najbardziej lubię tego typu mechanizmy robić w ten sposób, że mam listę elementów i każdy z nich zawiera input hidden będący tablicą, np. "elements[]" (te nawiasy na końcu są ważne). W JavaScripcie sobie zmieniasz kolejność, a do PHP przesyłają się po kolei. I potem już z górki, robisz np. tak:



bardzo ciekawy pomysł.
Zastanawiam się, jakiego mechanizmu Javascript użyc do zmiany kolejości elementów DIV.

Czy jQuery dysponuje jakimiś mechanizmami, kóre by na to pozwalały?
Spawnm
http://jqueryui.com/sortable/
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.