Kategorie i podkategorie - jak to ugryźć?


(1q2w3e4r) #1

Witam,

Zastanawiam się jak zrobić kategorie aby można było każda kategorię przypisać do obojętnie jakiej kategorii. Czyli np.

Kategoria 1

Kategoria 2

Kategoria 3

Kategoria 4

Kategoria 5

Kategoria 6

Kategoria 7

Kategoria 8

Kategoria 9

Kategoria 10

Teraz każda kategorię mogę przypisać do jakiejś kategorii JAKO podkategorię - obojętnie jaka głębokość (ale raczej nie przekroczy 5). Czyli:

>Kategoria 1 (kategoria)

=> Kategoria 2 (podkategoria - kategorii Kategoria 1)

=> Kategoria 3 (podkategoria - kategorii Kategoria 1)

==>Kategoria 4 (pod pod kategoria - kategorii Kategoria 3)

>Kategoria 5 (kategoria)

=> Kategoria 6 (podkategoria - kategorii Kategoria 5)

=> Kategoria 7 (podkategoria - kategorii Kategoria 5)

==>Kategoria 8 (pod pod kategoria - kategorii Kategoria 7)

===>Kategoria 9 (pod pod pod kategoria - kategorii Kategoria 8)

Mam nadzieję, że rozumiecie o co mi chodzi. Na pewno wiele ludzi się z tym problemem spotkało.

Ja myślałem to w bazie zrobić tak:

id | przypisanie | nazwa

id - id rekordu kategoria

przypisanie - tutaj będzie przypisanie do której kategorii należy. 0 == kategoria główna

nazwa - to wiadomo

Tylko nie wiem jak się zabrać za wyświetlanie tego w php aby zagnieżdżanie działało..

Proszę o pomoc. Byłbym wdzięczny za gotową funkcję.

Pozdrawiam


(Drobok) #2

Nadzieja matką głupich :lol:

Weź lepiej powiedz do czego ci to potrzebne ;]


(1q2w3e4r) #3

category00.png

Coś takiego raczej lepiej to zobrazuje.


(Drobok) #4

Jak chcesz coś takiego zrobić. Musiał byś wylistować wszystko w php, zwrócić do jquery i w jquery obsłużyć całość jako listę (rozwijanie po kliknięciu etc) Musisz sobie obsłużyć w jquery co masz aktualnie zaznaczone, potem po kliknięciu wysyłasz jquery each parent i dajesz w ciąg. Cały ciąg wysyłasz do skryptu php, gdzie otwierasz daną ścieżkę podaną przez ciąg (np poprzez post), a później tworzysz dany folder. Usuwanie jak dodawanie. Edycja nie wiem co tam może być.

Ogólnie ja bym to widział tak. Oczywiście mogą to być po prostu głupie linki z php, ale nic się nie będzie rozwijać bez przeładodowania. Po prostu listujesz cały folder + podfoldery. Ale te rozwinięte musisz przechowywać jakoś (get/sesja), najlepiej w tablicy mieć id każdego z folderów, po czym tam masz jakieś id(1rozwinięte 0 nie). Ale w przypadku czystego php, nie zrobisz dodawanie w postaci przycisku nad kodem, ponieważ nie wiedziałbyś gdzie to dodać (chyba, że byłby to najdłuższa rozwinięta gałąź, ale nie zawsze by się to sprawdzało, chyba że zablokujesz możliwość rozwijania dwóch gałęzi jednocześnie)


(1q2w3e4r) #5

Znalazłem coś takiego, drzewa kategorii metoda IP - sposób podobny do tego o którym ja myślałem http://blog.mwojcik.pl/2008/02/17/drzewa-kategorii-w-sql-i-php-metoda-ip/

Tylko kod, który tam się znajduje nie jest uporządkowany, a ja jestem początkujący i mam problem z jego wykorzystaniem.

Np. nie wiem jak mam podać dane do $cat['ip'] aby wyświetlić cale drzewo..

$q=mysql_query('SELECT * FROM kategorie WHERE ip LIKE CONCAT("'.$cat['ip'].'.%")');  $categories=array();  $r=mysql_fetch_assoc($q)){  $categories[$r['parentID']][$r['id']]=$r;  [/code]



Jakby miał ktoś trochę czasu to byłbym wdzięczny za jego złożenie. Czyli dodawanie kategorii oraz wyświetlanie w gotowych funkcjach.

(Drobok) #6

Masz przecież tam wyświetlanie jako funkcję display, oraz dodawanie na samym początku tekstu. Tak czy siak musisz określić do czego ci to jest potrzebne i jak chcesz wprowadzać dane ;]


(1q2w3e4r) #7

No potrzebne do strony, gdzie chcę tworzyć sobie kategorię do rozbudowanego menu i dowolnie je przypisywać.

Musze mieć formularz ich dodawania. Oraz ich wyświetlanie.

-- Dodane 10.09.2011 (So) 14:22 --

Poradziłem sobie z tym ale nie wiem jak zabrać się za wyświetlenie jednej gałęzi np. tylko Unix bez Windows.. np. poprzez podanie ID kategorii Unix.