Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dynamiczne generowanie DRZEWKA z bazy
Forum PHP.pl > Forum > PHP
luckyluc
Ostatnio przegladalem troche materialow na temat tworzenia menu drzewiastego. Tabele oparlem na prostej metodzie parenta.


ID | PARENT | NAZWA GRUPY
1 | 0 | PRZYGODOWE
2 | 1 | Indiana Jones
3 | 1 | Tomb Rider
4 | 1 | Skarb Narodów
5 | 0 | SENSACYJNE
6 | 5 | 60 sekund
7 | 5 | Twierdza
8 | 5 | Negocjator
9 | 1 | DLA DZIECI
10 | 9 | Reksio
11 | 9 | Teletubisie smile.gif


---

- PRZYGODOWE
--- Indiana Jones
--- Tomb Rider
--- Skarb Narodów

--- DLA DZIECI
------ Reksio
------ Teletubisie smile.gif

- SENSACYJNE
--- 60 sekund
--- Twierdza
--- Negocjator

---


Dziala dobrze, ale znalazlem fajny skrypt, ktory zwija podgrupy i wyswietla glowne kategorie. Po kliknieciu pokazuja sie dopiero podgrupy. Ponizej

przedstawiam kod:


  1. <ul id="tree0" class="tree">
  2. <li><a>PRZYGODOWE</a>
  3. <ul>
  4. <li><a href="...">Indiana Jones</a></li>
  5. <li><a href="...">Tomb Rider</a></li>
  6. <li><a href="...">Skarb Narodów</a></li>
  7.  
  8.  
  9. <li><a>DLA DZIECI</a>
  10. <ul>
  11. <li><a href="...">Reksio</a></li>
  12. <li><a href="...">Teletubisie :)</a></li>
  13. </ul>
  14. </li>
  15.  
  16. </li>
  17. </ul>
  18.  
  19.  
  20.  
  21. <li><a>SENSACYJNE</a>
  22. <ul>
  23. <li><a href="...">60 sekund</a></li>
  24. <li><a href="...">Twierdza</a></li>
  25. <li><a href="...">Negocjator</a></li>
  26. </ul>
  27. </li>
  28. </ul>




Chcialem dostosowac zapytanie wyciagajace dane z bazy w taki sposob, aby dynamicznie powstawala struktura jak przedstawiona powyzej. Moze ktos sie juz sie z tym spotkal. Z gory dziekuje za pomoc.
juzwa
ja to robię tak
1 - pobieram rekordy z bazy ustawione wg ID RODZICA
2 - za pomocą takiej funkcji ustalam sobie drzewo

  1. <?php
  2. /**
  3. *id - pierwsze id pierwszego elementu głównego
  4. *arr - tablica wyników kategorii
  5. *start - od którego elementu ma się zacząć pętla
  6. */
  7. function zrobDrzewo($id,$arr,$start)
  8. {
  9. static $idArr=array();
  10. for($i=0; $i<count($arr); $i++)
  11. {
  12. if($arr[$i]['PARENT']==$id)
  13. {
  14. $curr_id=$arr[$i]['ID'];
  15. $idArr[$i]=$i;
  16. zrobDrzewo($curr_id, $arr, $i+1);
  17. }
  18. }
  19. return $idArr;
  20.  
  21. }
  22. ?>
luckyluc
Do wypisanie struktury drzewka mam funkcje. Problem mam z przygotowaniem zapytania / funkcji, ktora utworzy strukture, ktora jest ponizej z <ul> i <li>


  1. <ul id="tree0" class="tree">
  2. <li><a>PRZYGODOWE</a>
  3. <ul>
  4. <li><a href="...">Indiana Jones</a></li>
  5. <li><a href="...">Tomb Rider</a></li>
  6. <li><a href="...">Skarb Narodów</a></li>
  7.  
  8.  
  9. <li><a>DLA DZIECI</a>
  10. <ul>
  11. <li><a href="...">Reksio</a></li>
  12. <li><a href="...">Teletubisie :)</a></li>
  13. </ul>
  14. </li>
  15.  
  16. </li>
  17. </ul>
  18.  
  19.  
  20.  
  21. <li><a>SENSACYJNE</a>
  22. <ul>
  23. <li><a href="...">60 sekund</a></li>
  24. <li><a href="...">Twierdza</a></li>
  25. <li><a href="...">Negocjator</a></li>
  26. </ul>
  27. </li>
  28. </ul>
sntObar
Cytat(juzwa @ 24.07.2007, 07:04:05 ) *
ja to robię tak
1 - pobieram rekordy z bazy ustawione wg ID RODZICA
2 - za pomocą takiej funkcji ustalam sobie drzewo

  1. <?php
  2. /**
  3. *id - pierwsze id pierwszego elementu głównego
  4. *arr - tablica wyników kategorii
  5. *start - od którego elementu ma się zacząć pętla
  6. */
  7. function zrobDrzewo($id,$arr,$start)
  8. {
  9. static $idArr=array();
  10. for($i=0; $i<count($arr); $i++)
  11. {
  12. if($arr[$i]['PARENT']==$id)
  13. {
  14. $curr_id=$arr[$i]['ID'];
  15. $idArr[$i]=$i;
  16. zrobDrzewo($curr_id, $arr, $i+1);
  17. }
  18. }
  19. return $idArr;
  20.  
  21. }
  22. ?>

Testowalem ten kod i niestety niedziala. Zauwazylem tez ze bez kozery w wywolaniu funkcji wystepuje zmienna $start, bo przeciez nigdzie w kodzie funkcji nie zostaje ona wywolana.

Zawartosc tablicy prezentuje sie nastepujaco:

  1. <?php
  2. $categories = array (array ( 
  3. 'id' => 1,
  4. 'parent_id' => 7,
  5. 'position' => 2,
  6. 'title' => 'pierwsza'),
  7. array ( 
  8. 'id' => 3,
  9. 'parent_id' => 7,
  10. 'position' => 3,
  11. 'title' => 'trzecia'),
  12. array ( 
  13. 'id' => 5,
  14. 'parent_id' => 7,
  15. 'position' => 1,
  16. 'title' => 'piata'),
  17. array ( 
  18. 'id' => 7,
  19. 'parent_id' => 0,
  20. 'position' => 1,
  21. 'title' => 'siodma'));
  22. ?>

Jakbys mial chec poprawic, wrzuc tu update winksmiley.jpg.
nospor
Cytat
Do wypisanie struktury drzewka mam funkcje. Problem mam z przygotowaniem zapytania / funkcji, ktora utworzy strukture, ktora jest ponizej z <ul> i <li>
No to skoro masz tę funkcję to jaki problem przerobic ja byc tworzylo ul i li tak jak chcesz? Pokaz te funkcje
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.