Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> generowanie drzewka z danych z mysql, * zadanie rozwiazane * slabo panowie *
AxZx
post
Post #1





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


witam


mam problem z wygenerowaniem kodu html takiego drzewka
http://gosu.pl/demo/mygosumenu/1.5/example1.html

kod tego drzewka:
  1. <div class="DynamicTree">
  2. <div class="top">Tree View</div>
  3.  
  4. <div class="wrap" id="tree">
  5. <div class="folder">Node 1
  6. <div class="folder">Node 1.1
  7. <div class="folder">Node 1.1.1
  8. <div class="doc"><a href="example1.html" title="Node 1.1.1.1" target="_self">Node 1.1.1.1</a></div>
  9. </div>
  10. </div>
  11. <div class="doc"><a href="example1.html">Node 1.2</a></div>
  12. </div>
  13.  
  14. <div class="doc"><a href="example1.html">Node 2</a></div>
  15. <div class="doc"><a href="example1.html">Node 3</a></div>
  16. <div class="doc"><a href="example1.html">Node 4</a></div>
  17. <div class="folder">Node 5
  18. <div class="doc"><a href="example1.html">Node 5.1</a></div>
  19. <div class="doc"><a href="example1.html">Node 5.2</a></div>
  20. </div>
  21.  
  22. </div>
  23. </div>


a kolumny w tabeli mam takie:
ID | nazwa | childs

childs wskazuje ile jest podkategorii

poki co zrobilem cos takiego
  1. <?php
  2. $wynik = '';
  3.  
  4. foreach($drzewo->getNodes() as $klucz=>$war){
  5.  
  6. if($war['childs'] > 0){
  7. $wynik .= '<div class="folder"> '.$war['nazwa'];
  8. }
  9. if($war['childs'] == 0){
  10. $wynik .= '<div class="doc"> '.$war['nazwa'].'</div>
  11. ';
  12.  
  13. }
  14. }
  15.  
  16. $wynik .= '</div></div>';
  17.  
  18. echo $wynik;
  19. ?>


ale wiadomo - nie dziala,
ma ktos pomysl jak to zorganizowac?

Ten post edytował AxZx 25.02.2006, 18:42:49


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
tiraeth
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

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


Najlepiej w bazie trzymać id, kategorię oraz id_matki

Taki przykładzik, przerób sobie tak jak potrzebujesz:

  1. <?php
  2. $connect = mysql_connect('host', 'user', 'pass');
  3. mysql_select_db('baza', $connect);
  4.  
  5. function liczby($liczba, $i = 0)
  6. {
  7.  $res = mysql_query("SELECT * FROM tabela WHERE motherid = ".$liczba);
  8.  while($row = mysql_fetch_assoc($res))
  9.  {
  10. echo ($liczba == 0) ? '<b>' : '';
  11.  
  12. for($a=0; $a<$i; $a++)
  13. {
  14.  echo '...';
  15. }
  16. echo $row['title'];
  17. echo ($liczba == 0) ? '</b>' : '';
  18. echo '<br />'."\n";
  19. liczby($row['id'], $i+1);
  20.  }
  21. }
  22.  
  23. liczby(0);
  24. ?>


Przykładowy wynik:
Kod
<b>Kategoria 1</b><br />
...Podkategoria 3/1<br />
......Podkategoria 5/3<br />
<b>Kategoria 2</b><br />
...Podkategoria 4/2<br />


Potem możesz sprawdzać czy dla X czy jakiś rekord ma właśnie motherid ustawione na ten X i jezeli tak to wyswietlasz ikonke folderu, inaczej ikonke normalną smile.gif
Go to the top of the page
+Quote Post
AxZx
post
Post #3





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


dzieki za dobre checi ale niestety nie o to mi chodzilo.
chce uzyskac taki HTML jaki napisalem bo chce uzyc tego drzewka.
wchodziles na strone ktorej link podalem?
zobacz jak to drzewko ladnie wyglada i jaka fajna ma mozliwosc smile.gif
mozna zwijac cala galaz smile.gif i wlasnietaki efekt staram sie uzyskac ... niestety bezskutecznie.


EDIT
prawie dobrze

  1. <?php
  2. $wynik = '<div class="DynamicTree">
  3. <div class="top">Tree View</div>
  4. <div class="wrap" id="tree">';
  5.  
  6.  
  7. $ilosc_dzieci=0;
  8. $iter_rodzic=0;
  9. $iter_dziecko=0;
  10.  
  11. foreach($drzewo->getNodes() as $klucz=>$war){
  12.  
  13.  
  14. if($war['childs'] > 0){
  15. $wynik .= '<div class="folder"> '.$war['nazwa'].'...'.$war['childs'].'
  16. ';
  17. $ilosc_dzieci=$war['childs'];
  18. $iter_rodzic++;
  19. }
  20. if($war['childs'] == 0){
  21. $wynik .= '<div class="doc"> '.$war['nazwa'].'</div>
  22. ';
  23. $iter_dziecko++;
  24. }
  25. if($ilosc_dzieci==$iter_dziecko){
  26. for($b=0;$b<$iter_rodzic;$b++){
  27. $wynik .= '</div>';
  28. }
  29. $ilosc_dzieci=0;
  30. $iter_dziecko=0;
  31. }
  32. }
  33.  
  34. $wynik .= '</div></div>';
  35.  
  36. echo $wynik;
  37. ?>


ktos ma ochote na burze mozgu?
czy wogole da sie to zrobic w ten sposob co ja kombinuje?


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
ActivePlayer
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 224
Pomógł: 40
Dołączył: 6.07.2004
Skąd: Wuppertal

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


sposob jaki podal tiraeth jest latwiejszy do wykonania. nie trzymasz w polu childs id dzieci jakie posiada kategoria, tylko trzymasz w katerorii id matki. wtedy latwiej pobrac wszystkie dzieci danej kategorii itd.
Go to the top of the page
+Quote Post
AxZx
post
Post #5





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


to doradz mi prosze jak zrobic takie drzewko, zebym mogl zwijac cale galezie

trzymam w tabeli takie dane jak:
z danych w tabeli moge wyciagnac takie dane jak:
ilosc dzieci,
id glownej kategorii
id nadrzednej kategorii

ale co mi to daje?

jak zrobic drzewko ktore bede mogl zwijac i rozwijac?


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
tiraeth
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

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


Zwijanie i rozwijanie drzewka to już tylko kwestia HTML'a a nie php... mój kod bardzo dobrze się do tego nadaje smile.gif
Go to the top of the page
+Quote Post
AxZx
post
Post #7





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


wiem za co odpowiada HTML a za co php. problemem jest to w jaki sposob wygenerowac taki kod HTML zeby mozna bylo zwijac wybrane galezie.
problem tkwi w tym ze jezeli zwijam glowna galaz to musza sie tez ukryc wszystkie galezie ktore naleza do tej glownej.


pozatym mam troche inaczej zapisane dane w bazie, nie moge wykorzystac Twojego sposobu, mam poprostu wyrzucane dane w kolejnosci tak jak sa w hierarchii drzewa.

pokaz mi prosze przyklad dzialania twojego kodu - tak zebym zobaczyl ze rzeczywiscie mozna zwijac i rozwijac poszczegolne galezie, najlepiej jeszcze zeby bylo to zgodne z
XHTML 1.0 strict



EDIT
Wkoncu wymyslilem

troche operacji na tablicach i wszystko elegancko smiga.
jezeli ktos chcialby miec ladne drzewko to prosze sie zglosic na PW smile.gif


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
The Night Shadow
post
Post #8





Grupa: Zarejestrowani
Postów: 495
Pomógł: 2
Dołączył: 5.02.2006
Skąd: Wrocław

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


  1. <?php
  2. $connect = mysql_connect('host', 'user', 'pass');
  3. mysql_select_db('baza', $connect);
  4.  
  5. function liczby($liczba, $i = 0)
  6. {
  7.  $res = mysql_query("SELECT * FROM tabela WHERE motherid = ".$liczba);
  8.  while($row = mysql_fetch_assoc($res))
  9.  {
  10. echo ($liczba == 0) ? '<b>' : '';
  11.  
  12. for($a=0; $a<$i; $a++)
  13. {
  14.  echo '...';
  15. }
  16. echo $row['title'];
  17. echo ($liczba == 0) ? '</b>' : '';
  18. echo '<br />'."\n";
  19. liczby($row['id'], $i+1);
  20.  }
  21. }
  22.  
  23. liczby(0);
  24. ?>


Co do tego skryptu... jak powinien wyglądać skrypt usuwający dany dział? Należałoby usunąć dział, wszystki poddziały i pliki w nich się znajdując.
Folder plików to galerie


--------------------
Programista Stron i Serwisów WWW oraz Aplikacji Internetowych
Specjalista ds. Pozycjonowania Aplikacji Internetowych
Copywriter
Go to the top of the page
+Quote Post
Vogel
post
Post #9





Grupa: Zarejestrowani
Postów: 402
Pomógł: 0
Dołączył: 20.01.2003

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


http://www.depesz.com/various-sqltrees.php
http://www.depesz.com/various-sqltrees-implementation.php


--------------------
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: 22.08.2025 - 07:54