Własna kolejność wyświetlania rekordów

Własna kolejność wyświetlania rekordów
dawid4157
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 220
0

Cześć,
u siebie na stronie posiadam kategorie, wyświetlane z bazy danych. Są one sortowane pod względem daty dodania(ORDER BY date). Tu się pojawia pytanie. Jak posortować wyświetlane rekordy według własnej kolejności? Wymyśliłem coś takiego:
kontrolka.png

Z lewej wszystkie kategorie, z prawej kolejność w jakiej mają być wyświetlane na stronie. Tylko nie wiem jak się za takie coś zabrać. Istnieje w ogóle domyślnie taka kontrolka? A może ma ktoś jakiś inny pomysł jak wyświetlić rekordy z bazy danych pod względem własnej kolejności? Może trochę chaotycznie opisałem ale w razie czego to pytajcie.

axelbest
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 2255
1

To co pokazałeś na screenie istnieje - https://jqueryui.com/sortable/. W przypadku właśnej kolejności - dorobisz w bazie czy innej strukturze pole odpowiedzialne za kolejność i tyle. Pamiętaj że problem może się pojawić w momencie gdy jeden element będzie wyświetlany w kilku miejscach oraz w momencie gdy będziesz stosował jakieś zagnieżdżenia.

dawid4157
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 220
0

Wymyśliłem taki sposób zapisu informacji o kolejności w bazie danych.
Stworzyłbym sobie taką tabelkę:

id sequence
1 2, 3, 4, 5, 1

Kolumna sequence posiadała by typ "łańcuchowy". Z tego co wyczytałem to albo ENUM albo SET. Tylko, żeby utworzyć taki typ trzeba z góry narzucić ile będzie elementów tablicy. Da się dla tych typów nie określać ilości elementów?

axelbest
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 2255
0

A jak na podstawie tej tabeli będziesz ustawiał kolejność i wyświetlał inne rekordy? Taki rodzaj kolejności będzie także bardzo niewygodny w rozbudowie jak i korzystaniu z tego.

Pokaż przykład jak ta "sekwencja" będzie miała wpływ na kolejność rekordów.

mr_jaro
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Grudziądz/Bydgoszcz
  • Postów: 5300
0

Tabela z kategoriami a w niej kolumna np priority, inna tabelka która jest w relacji z kategoriami, robisz joina i sortujesz po priority i tyle. Jeśli dobrze rozumiem to co chcesz zrobić.

dawid4157
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 220
0

Nie no ogólnie jeśli chodzi o trzymanie tego w bazie danych to wiem jak. Dodałem sobie kolumnę sequence do tabeli category i później przy wyświetlaniu kategorii sortuję:

Kopiuj
SELECT `category_name` FROM `category` ORDER BY `sequence` ASC

Bardziej zastanawia mnie jak przygotować jakiś formularz, który by wprowadzał do bazy danych tą kolejność. Nie chodzi o jego wykonanie tylko o sam pomysł, bo u mnie go brak :)

axelbest
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 2255
0

No to dałem przykład przecież :) ew możesz przy każdej pozycji dać dwa linki - "Umieść wyżej" / "Umieść niżej" (np jako strzałki) i za ich pomocą przenosić manualnie o jedną pozycję wyżej/niżej dany rekord.

mr_jaro
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Grudziądz/Bydgoszcz
  • Postów: 5300
0

Siedzę właśnie na czymś takim, najprościej wysyłasz tablice z id`ekami i potem w backendzie na podstawie tej kolejności ustawiasz priority poszczególnym rekordom w bazie.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.