Mam problem ze zrobieniem linków w mapie strony, mam taką tabelę:
  1. CREATE TABLE `strony` (
  2. `id` bigint(20) NOT NULL AUTO_INCREMENT,
  3. `tytul` varchar(250) collate utf8_unicode_ci NOT NULL,
  4. `link` varchar(250) collate utf8_unicode_ci NOT NULL,
  5. `tresc` longtext collate utf8_unicode_ci,
  6. `parent_id` bigint(20) DEFAULT NULL,
  7. `sortorder` bigint(20) DEFAULT NULL,
  8. `created_at` datetime NOT NULL,
  9. `updated_at` datetime NOT NULL,
  10. PRIMARY KEY (`id`),
  11. KEY `parent_id_idx` (`parent_id`)
  12. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=17 ;
  13.  
  14. --
  15. -- Zrzut danych tabeli `strony`
  16. --
  17.  
  18. INSERT INTO `strony` (`id`, `tytul`, `link`, `tresc`, `parent_id`, `sortorder`, `created_at`, `updated_at`) VALUES
  19. (1, 'aaa', 'aaa', NULL, NULL, 0, '2010-04-17 14:29:46', '2010-04-17 14:29:46'),
  20. (2, 'bbb', 'bbb', NULL, NULL, 1, '2010-04-17 14:29:46', '2010-04-17 14:29:46'),
  21. (3, 'ccc', 'ccc', NULL, NULL, 6, '2010-04-17 14:29:46', '2010-04-17 14:29:46'),
  22. (4, 'ddd', 'ddd', '', 3, 0, '2010-04-17 14:29:46', '2010-04-17 14:45:39'),
  23. (5, 'eee', 'eee', NULL, 3, 1, '2010-04-17 14:29:46', '2010-04-17 14:29:46'),
  24. (8, 'fff', 'fff', NULL, NULL, 7, '2010-04-17 14:29:46', '2010-04-17 14:29:46'),
  25. (9, 'ggg', 'ggg', NULL, NULL, 3, '2010-04-17 14:29:46', '2010-04-17 14:29:46'),
  26. (10, 'hhh', 'hhh', NULL, NULL, 4, '2010-04-17 14:29:46', '2010-04-17 14:29:46'),
  27. (11, 'iii', 'iii', NULL, 10, 0, '2010-04-17 14:29:46', '2010-04-17 14:29:46'),
  28. (12, 'jjj', 'jjj', NULL, 10, 1, '2010-04-17 14:29:46', '2010-04-17 14:29:46'),
  29. (13, 'kkk', 'kkk', NULL, 10, 2, '2010-04-17 14:29:46', '2010-04-17 14:29:46'),
  30. (14, 'lll', 'lll', 'aaa', 4, 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00'),
  31. (15, 'mmm', 'mmm', 'bbb', 5, 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00'),
  32. (16, 'nnn', 'nnn', 'ccc', 15, 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00');
  33.  
  34. --
  35. -- Ograniczenia dla zrzutów tabel
  36. --
  37.  
  38. --
  39. -- Ograniczenia dla tabeli `strony`
  40. --
  41. ALTER TABLE `strony`
  42. ADD CONSTRAINT `strony_parent_id_strony_id` FOREIGN KEY (`parent_id`) REFERENCES `strony` (`id`);




I kod PHP:
  1. $polaczenie=mysql_connect ("localhost", "root", "");
  2. mysql_select_db ("baza");
  3. mysql_query("SET NAMES utf8");
  4.  
  5.  
  6. class Map
  7. {
  8. private $menu;
  9. private $menu_link;
  10.  
  11. public function tree_menu($index)
  12. {
  13. $query = mysql_query ("SELECT *, IFNULL(parent_id, 0) AS parent FROM Strony HAVING parent = $index ORDER BY sortorder");
  14.  
  15. $this->menu.= '<ul>';
  16. while ($x = mysql_fetch_assoc($query))
  17. {
  18. $this->menu.= '<li>';
  19.  
  20. if($x['parent_id'] == null) $this->menu_link = null;
  21. $this->menu_link = $this->menu_link.'/'.$x['link'];
  22.  
  23. $this->menu.= "<a href='".$this->menu_link."'>".$x['tytul']."</a>";
  24. $this->tree_menu($x['id']);
  25. $this->menu.= '</li>';
  26. }
  27. $this->menu.= '</ul>';
  28. }
  29.  
  30. public function showMap()
  31. {
  32. echo $this->menu;
  33. }
  34. }
  35.  
  36.  
  37.  
  38. $map = new Map();
  39. $map->tree_menu(0);
  40. $map->showMap();



Tworzy mi to poprawne drzewko mapy strony:



Ale linki są błędne, np. jak jest gałąź: ccc-eee-mmm-nnn to link powinien być postaci:
ccc/eee/mmm/nnn
a teraz mam:
ccc/ddd/lll/eee/mmm/nnn

Nie wiem już jak to zrobić żeby mi tworzyło poprawne linki, może macie jakiś pomysł ?