Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [HTML][PHP] Tworzenie drzewa
bemol
post
Post #1





Grupa: Zarejestrowani
Postów: 286
Pomógł: 29
Dołączył: 5.04.2007
Skąd: Rymanów Zdrój/Rzeszów

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


Witam.

Muszę stworzyć strukturę katalogową, w tym przypadku będzie to struktura drzewa, ponieważ jeden z katalogów jest głównym.
Uproszczona struktura folderu wygląda następująco:
  1. $array[$i]->id
  2. $array[$i]->nazwa
  3. $array[$i]->podrzedny_id
  4. $array[$i]->nadrzedny_id
  5. $array[$i]->level
  6. // $array[$i]->id i $array[$i]->podrzedny_id są zawsze takie same


Katalog główny (o id równym 1) w polu nadrzedny_id ma NULL, katalogi znajdujące się w katalogu głównym to takie, które mają w nadrzedny_id = 1 itd analogicznie.

Potrzebuję stworzyć html na podstawie tego, który będzie wyglądał następująco:
  1. <ul>
  2. <li>Catalog1
  3. <ul>
  4. <li>Subcatalog1
  5. <ul>
  6. <li>
  7. Subsubcatalog1
  8. </li>
  9. <li>
  10. Subsubcatalog2
  11. </li>
  12. </ul>
  13. </li>
  14. <li>
  15. Item2
  16. </li>
  17. <li>
  18. Item3
  19. </li>
  20. </ul>
  21. </li>
  22. <li>
  23. Catalog2
  24. </li>
  25. </ul>


W jaki sposób się do tego zabrać? Proszę o pomoc.


--------------------
Tym ludziom zaufałem i dobrze na tym wyszedłem:
kresh
Darti
piotrekkr
Bez nich wiele bym nie zrobił. Dzięki im za to!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
szalek01
post
Post #2





Grupa: Zarejestrowani
Postów: 129
Pomógł: 17
Dołączył: 17.09.2012

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


Tu masz przykłady http://www.jstree.com/ (nested) jednak poczytaj o wydajnościach. W tym wypadku łatwo jest pobrać cześć drzewa z bazy 1 zapytaniem ale już dopisanie powoduje przepisywanie wielu rekordów.


--------------------
PDO nie gryzie....
Go to the top of the page
+Quote Post
CuteOne
post
Post #3





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

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


Kategorie to zmora programistów wink.gif nie problem napisać zapytania, które pobiorą drzewko kategorii, problemem jest wydajność. W jednym z portali, dla których pisałem modły stosowano metodę IP - http://blog.mwojcik.pl/2008/02/17/drzewa-k...-php-metoda-ip/ zdaje egzamin przy niewielkiej ilości gałęzi/liści i dużym zagłębieniu.

Ja bym proponował zrobić to co robię do dnia dzisiejszego - zapisać całe drzewo do pliku JSON i za pomocą JS wygenerować je już po stronie przeglądarki.
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #4





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Moim zdaniem wystarczy pole id_rodzica. I zrobić te rekurencyjnie.

  1. function wyszukajDzieci($id_pola) {
  2. foreach($tablica as $key => $value) {
  3. if ($value['id_rodzica'] == $id_pola) {
  4. echo $value['nazwa_pola']; // wypisuje dzieci dla obecnego węzła
  5. wyszukajDzieci($value['id_pola']); // szuka dzieci dziecka
  6. }
  7. }
  8. }


Przy założeniu, że jest to dwuwymiarowa tablica o postaci:

  1. $tablica = array(
  2. array('id_pola' => 10, 'id_rodzica' => 1, 'nazwa_pola' => 'costam'),
  3. array('id_pola' => 11, 'id_rodzica' => 1, 'nazwa_pola' => 'costam1'),
  4. // itd.
  5. );


Ten post edytował b4rt3kk 26.10.2012, 01:28:33


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
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 Aktualny czas: 20.08.2025 - 11:32