Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Mechanizm zmiany kolejności elementów., Strzałka w góre i w dół a po kiknięciu zmieniamy kolejnosć.
kukix
post
Post #1





Grupa: Zarejestrowani
Postów: 600
Pomógł: 2
Dołączył: 1.09.2002
Skąd: Wrocław

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


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.

Ten post edytował kukix 8.08.2013, 00:21:12
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
SmokAnalog
post
Post #2





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


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. }
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 15.10.2025 - 09:23