Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Kategorie i podkategorie - jak to ugryźć ?
1q2w3e4r
post 1.09.2011, 19:01:22
Post #1





Grupa: Zarejestrowani
Postów: 238
Pomógł: 0
Dołączył: 6.05.2011

Ostrzeżenie: (10%)
X----


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



Go to the top of the page
+Quote Post
CuteOne
post 1.09.2011, 19:03:50
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


Poczytaj o przeszukiwaniu drzewa metodą IP -> link
Go to the top of the page
+Quote Post
1q2w3e4r
post 2.09.2011, 10:29:04
Post #3





Grupa: Zarejestrowani
Postów: 238
Pomógł: 0
Dołączył: 6.05.2011

Ostrzeżenie: (10%)
X----


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.
Go to the top of the page
+Quote Post
wookieb
post 2.09.2011, 10:36:15
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




http://www.slideshare.net/billkarwin/model...erarchical-data


--------------------
Go to the top of the page
+Quote Post
dmateo
post 2.09.2011, 10:42:44
Post #5





Grupa: Zarejestrowani
Postów: 27
Pomógł: 3
Dołączył: 19.05.2009

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


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.
Go to the top of the page
+Quote Post
1q2w3e4r
post 2.09.2011, 10:43:03
Post #6





Grupa: Zarejestrowani
Postów: 238
Pomógł: 0
Dołączył: 6.05.2011

Ostrzeżenie: (10%)
X----


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

Ten post edytował 1q2w3e4r 2.09.2011, 10:54:21
Go to the top of the page
+Quote Post
dmateo
post 2.09.2011, 12:38:28
Post #7





Grupa: Zarejestrowani
Postów: 27
Pomógł: 3
Dołączył: 19.05.2009

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


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


Go to the top of the page
+Quote Post
1q2w3e4r
post 2.09.2011, 12:42:22
Post #8





Grupa: Zarejestrowani
Postów: 238
Pomógł: 0
Dołączył: 6.05.2011

Ostrzeżenie: (10%)
X----


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/
Go to the top of the page
+Quote Post
CuteOne
post 2.09.2011, 15:59:39
Post #9





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


Tam masz wszystko jasno i czytelnie opisane... jak cię to przerasta to szukaj alternatywnego sposobu
Go to the top of the page
+Quote Post
1q2w3e4r
post 10.09.2011, 13:03:56
Post #10





Grupa: Zarejestrowani
Postów: 238
Pomógł: 0
Dołączył: 6.05.2011

Ostrzeżenie: (10%)
X----


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.
Go to the top of the page
+Quote Post
CuteOne
post 10.09.2011, 15:45:44
Post #11





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


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

Ten post edytował CuteOne 10.09.2011, 15:47:11
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 15.06.2025 - 07:33