Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> "Własna" kolejność rekordów w tabeli
Nivelis
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 10.11.2013

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


Witam,

o dziwo nie potrafię znaleźć rozwiązania swojego problemu w internecie, dlatego będę również wdzięczny za rzucenie kilku keywordów (lub wskazówek) zamiast gotowego rozwiązania (IMG:style_emoticons/default/smile.gif)

Moja tabela "katerogie" zawiera (dla maksymalnego uproszczenia) następujące pola
id - identyfikujące daną kategorię
name - wiadomo
order - w celu określenia "customowej" kolejności kategorii

W Panelu Administracyjnym mam wylistowane wszystkie kategorie, posortowane według pola order. W każdym wierszu z kategorią znajdują się też 2 strzałki (do prostego przemieszczania kategorii w górę/w dół).

Moje pytania są następujące:
- jak najprościej (np. bez używania funkcji MAX() dodać nową kategorię o "najstarszej" kolejności ?
- jak usunąć kategorię tak, by nie została luka (np. order po usunięciu kilku kategorii wygląda tak: 0, 7, 8, 9, 13)
- jak najprościej (przy pomocy wyżej wymienionych "strzałek") zamienić 2 kategorie miejscami (zakładam, że order ma klucz UNIQUE) ?
- linijkę wyżej zamieniam miejscami dwie kategorie, które leżą obok siebie. jak się ma sytuacja w przypadku, gdy chcę przesunąć kategorię np. z pozycji 2 na zajętą pozycję 10, tak aby reszta się ładnie poukładała ?
- czy istnieje lepszy sposób na zaprojektowanie tego niż wyżej przedstawiony ?

Dodam, że istnieje także druga tabela z podkategoriami, w której każdy element ma przypisanego rodzica i swoją kolejność w obrębie danej nadkategorii.

Pozdrawiam i z góry dziękuję za wszelką pomoc,
Nivelis

Ten post edytował Nivelis 20.01.2014, 11:31:12
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mmmmmmm
post
Post #2





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


Cytat(Nivelis @ 20.01.2014, 11:25:16 ) *
Moja tabela "katerogie" zawiera (dla maksymalnego uproszczenia) następujące pola
id - identyfikujące daną kategorię
name - wiadomo
order - w celu określenia "customowej" kolejności kategorii

Nie nadawaj nazw, które są słowami kluczowymi w SQL.

Cytat(Nivelis @ 20.01.2014, 11:25:16 ) *
Moje pytania są następujące:
- jak najprościej (np. bez używania funkcji MAX() dodać nową kategorię o "najstarszej" kolejności ?

ORDER BY `order` DESC LIMIT 1 (IMG:style_emoticons/default/smile.gif)
Cytat(Nivelis @ 20.01.2014, 11:25:16 ) *
- jak usunąć kategorię tak, by nie została luka (np. order po usunięciu kilku kategorii wygląda tak: 0, 7, 8, 9, 13)

Po co?
Cytat(Nivelis @ 20.01.2014, 11:25:16 ) *
- jak najprościej (przy pomocy wyżej wymienionych "strzałek") zamienić 2 kategorie miejscami (zakładam, że order ma klucz UNIQUE) ?

UPDATE katerogie SET `order`=6-`order` WHERE `order` IN (2,4) -- 6 bierze się z sumy 2 + 4
Cytat(Nivelis @ 20.01.2014, 11:25:16 ) *
- linijkę wyżej zamieniam miejscami dwie kategorie, które leżą obok siebie. jak się ma sytuacja w przypadku, gdy chcę przesunąć kategorię np. z pozycji 2 na zajętą pozycję 10, tak aby reszta się ładnie poukładała ?

Po co?
Cytat(Nivelis @ 20.01.2014, 11:25:16 ) *
- czy istnieje lepszy sposób na zaprojektowanie tego niż wyżej przedstawiony ?

Być może - nie znam.
Cytat(Nivelis @ 20.01.2014, 11:25:16 ) *
Dodam, że istnieje także druga tabela z podkategoriami, w której każdy element ma przypisanego rodzica i swoją kolejność w obrębie danej nadkategorii.

Błąd. wrzuć wszystko do jednej tabeli z dodatkowym polem (parentId). Wtedy UNIQUE na parentId, order
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: 27.12.2025 - 08:11