Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kategorie i podkategorie - jak to ugryźć ?
Forum PHP.pl > Forum > PHP
1q2w3e4r
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



CuteOne
Poczytaj o przeszukiwaniu drzewa metodą IP -> link
1q2w3e4r
Dzięki za linka. Jestem poczatkujący w php i jakoś nie wiem jak mam podać dane do $cat['ip']

  1. $q=mysql_query('SELECT * FROM kategorie WHERE ip LIKE CONCAT("'.$cat['ip'].'.%")');
  2. $categories=array();
  3. while($r=mysql_fetch_assoc($q)){
  4. $categories[$r['parentID']][$r['id']]=$r;
  5. }


Ten kod jest tak trochę rozwalony. Jakby miał ktoś trochę czasu to byłbym wdzięczny za jego złożenie. Czyli dodawanie kategorii oraz wyświetlanie.
dmateo
Cytat(1q2w3e4r @ 2.09.2011, 10:29:04 ) *
Dzięki za linka. Jestem poczatkujący w php i jakoś nie wiem jak mam podać dane do $cat['ip']


W linku, który podał kolega:

Cytat
ip zawiera ip rodzica


Alternatywnym rozwiązaniem jeśli kategorie zmieniają się rzadko jest faktycznie trzymanie w bazie id i parent id oraz trzymanie takiej listy w cache, bo wyciąganie za każdym razem tego w zapytaniu / zapytaniach będzie czasochłonne.
1q2w3e4r
@wookieb Nie ma tam przykładu w php. Niestety nic mi to nie pomogło.

@dmateo "ip zawiera ip rodzica" tak ale jak to ip rodzica pobrać? Czy wyświetlić wszystkie kategorię z bazy danych w pętli while a później do niej przypisać ?

Proszę o złożenie kodu z linku, który podałem u poprzednim MOIM poście.
dmateo
Jesli chcesz pobrac cale drzewko to IP rodzica jest 1. Natomiast jesli chcesz pobrac tylko czesc, to zakladamy, ze uzytkownik wybral konkretna galaz i jesli mamy menu z linkami to IP mozemy przekazac np. przez GET.

Cytat
Proszę o złożenie kodu z linku, który podałem u poprzednim MOIM poście.


W zadnym ze swoich postow nie podales linka :/


1q2w3e4r
Chodzi o złożenie skryptu, do którego linka podał @CuteOne czyli: http://blog.mwojcik.pl/2008/02/17/drzewa-k...-php-metoda-ip/
CuteOne
Tam masz wszystko jasno i czytelnie opisane... jak cię to przerasta to szukaj alternatywnego sposobu
1q2w3e4r
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.
CuteOne
ID gałęzi znajduje się w ip.
  1. <?php
  2.  
  3. $id = 5;
  4.  
  5. $select = mysql_query('SELECT * FROM kategorie WHERE ip LIKE CONCAT("'.$id.'.%")');


Przykładowe rekordy wyszukane po ip:
5.12.
2.4.5.22.31,
1.5.7.8.22.11
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.