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

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.

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.

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?

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.

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ć.

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ę:

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 :)

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.

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1