Witam.
Mam o to toki kodzik ktroy generuje mi drzewko - tzn pobiera jednym zapytaniem wszystkie kategorie, nastepnie odpowiednio sortuje to drzewko.

Nastepnie do kolejnego poziomu kategorii (gdzie PARENT_Id nie jest zero - dodaje odstepy.

Niestety tych odstepow nie dodaje juz do jeszcze kolejnego poziomu.
Czyli wyglada to tak:
  1. Przyklad
  2.  
  3. Kategoria  1
  4.      Kategoria 1.1
  5.      Kategoria 1.2
  6.      Kategoria 1.2.1 - i wlasnie tutaj powinno dodac kolejne wciecie a tego nie robi.

Bardzo prosze o pomoc w rozwiazaniu tego problemu.

Ja myslelm nad wprowdzeniem dodatkowego POLA w tablicy ktroa generuje ten skrypt o naziwe LEVEL.
I tak dla Przykladu ktroy podalem wyzej dla kazdej z tych kategorii zmienna LEVEL wygladala by tak:
  1.      Kategoria 1 - LEVEL=0
  2.      Kategoria 1.1 - LEVEL=1
  3.      Kategoria 1.2 - LEVEL=1
  4.      Kategoria 1.2.1 - LEVEL=2
  5. itd.

  1. <?
  2. $resdddd = $db->get_results("SELECT ID,PARENT_ID,TITLE,CACHE_URL FROM ".CAT." ORDER BY PARENT_ID, TITLE ",ARRAY_A); 
  3. // Kolejne wezly drzewa. 
  4. $tree = array(); 
  5. $level = 0;
  6. $tree[0] = array('children' => array()); 
  7. foreach( $resdddd as $row ){
  8. // Przepisujemy z SQL'a 
  9. $level = $level + 1;
  10. $row['ID'] = (int) $row['ID']; 
  11. $row['PARENT_ID'] = (int) $row['PARENT_ID']; 
  12. $tree[$row['ID']] = $row; 
  13. // Tablica potomkow wezla 
  14. $tree[$row['CID']]['children'] = array(); 
  15. // Sciezka 
  16. if ((int) $row['PARENT_ID']) 
  17. { 
  18. $tree[$row['ID']]['path'] = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '.$row['TITLE'].''; 
  19. } 
  20. else 
  21. { 
  22. $tree[$row['ID']]['path'] = $row['TITLE']; 
  23. } 
  24. // Dodajemy wskaznik do wezla do tablicy potomkow jego rodzica (czyli do tablicy braci) 
  25. $tree[$row['PARENT_ID']]['children'][] =& $tree[$row['ID']]; 
  26. } 
  27. // Ustalamy nowa kolejnosc. 
  28. function setOrderRecursive2(&$tree, &$orderredTree, &$node) 
  29. { 
  30. // Wglebiamy sie. 
  31. for ($i = 0, $n = count($node['children']); $i < $n; $i++) 
  32. { 
  33. // Dodajemy biezacy wezel do tablicy kolejnosci. 
  34. $orderredTree[] =& $node['children'][$i]; 
  35.  
  36. // Przechodzimy poddrzewo. 
  37. setOrderRecursive2($tree, $orderredTree, $node['children'][$i]); 
  38. } 
  39. }
  40. // Wywolujemy 
  41. setOrderRecursive2($tree, $orderredTree = array(), $tree[0]); 
  42.  
  43. $smarty->assign("se",$orderredTree);
  44. $szablon ='cats_tree.tpl';
  45. ?>


Z gory dzieki za pomoc.

PS. Oczywiscie jak juz bede mial w tablicy $orderredTree dodatkowa zmienna LEVEL - to wtedy juz w szablonie SMARTY odpowiednio zrobie sobie wciecia za pomoca np.
<td class="tree_{$se.LEVEL}">{$se.TITLE}</td>[/code]