Witam,
mam problem z wstawieniem zawartości drzewa do listy numerowanej.
Używam takiego kodu do tworzenia listy:
  1. <?
  2. function pokaz_inf($id) {
  3. $tmp = 0;
  4. global $t;
  5. $wynik=array();
  6. foreach($t as $element) if ($element['rodzic']==$id) $wynik[] = $element;
  7.  
  8. foreach($wynik as $element) { 
  9. $ch = false;
  10. if ($element['type']=='folder') 
  11. echo '<li><a href="#">'.$element['nazwa'].'</a><ul>';
  12.  
  13. else echo '<li><a href="#">'.$element['nazwa'].'</a></li>';
  14. if ($tmp == count($wynik)-&& $element['rodzic']<>0) echo '</ul></li>';
  15. foreach ($t as $element2) {
  16. if ($element2['id']==$element['rodzic']) { $ch = true; break; }
  17. }
  18. if ($ch==false && $element['type']=='folder')
  19. echo '</ul></li>';
  20. $tmp++;
  21. pokaz_inf($element['id']);
  22. }
  23. }
  24.  
  25.  
  26.  
  27. $result = query('SELECT * FROM `info_tree` ORDER BY `order`');
  28. if ($result) {
  29. while($dane = mysql_fetch_array($result)) {
  30. $t[] = array('id'=>$dane['id'], 'rodzic'=>$dane['pid'],
  31.  'nazwa'=>$dane['node_name'], 'element_id'=>$dane['element_id'], 'type'=>$dane['type']);
  32. }
  33. }
  34. echo '<ul class="menulist" id="listMenuRoot">';
  35. pokaz_inf(0);
  36. echo '</ul>';
  37. ?>

Problem w tym, że nie wiem jak sprawdzić, w którym momencie mam zamknąć odpowiedni znacznik <ul> i <li>. W kodzie widać moje niezbyt udolne próby... Struktura tabeli:

  1. CREATE TABLE `info_tree` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `pid` int(11) NOT NULL,
  4. `element_id` int(11) DEFAULT NULL,
  5. `type` text NOT NULL,
  6. `order` tinyint(4) NOT NULL,
  7. `node_name` text NOT NULL,
  8. PRIMARY KEY (`id`)
  9. )


Bardzo proszę o pomoc.
Pozdrawiam