Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Nested Tree Problem
Forum PHP.pl > Forum > PHP
andrzej7322
Witam mam problem z napisaniem funkcji ktora bedzie przedstwio moje n poziomowe menu w zaleznosc od galęzi. Chciałbym aby moje menu bylo wyswietlane w taki sposób, że otrzymam

  1. Menu 1
  2. --Podmenu 1
  3. --Podmenu 2
  4. ----Podmenu 2,1[wybrane]
  5. ----Podmenu 2,2
  6. --Podmenu 3
  7. Menu 2
  8. Menu 3
  9. itd...


Chciałbym nie otrzymywac calej rozwinietej listy lecz jena galąż tą w której jest wskazane przeze mnie podmenu .Potrzebuje dostać się do wybranego podmenu ale tak aby zostala wyswietlona lista podmenu2 w korym znajduje się wybraniec oraz lista podmenu w menu 1 a reszta zeby byla zwinieta i tylko nierozwinieta nazwa menu.. wyswietlana.
Oto moja funkcja

  1. public function getTree() {
  2. $sql = "SELECT n." . $this->pk . ", n." . $this->name . ", COUNT(*)-1 AS level FROM " . $this->table . " AS n, " . $this->table . " AS p WHERE n.lft BETWEEN p.lft AND p.rgt GROUP BY n.lft ORDER BY n.lft;";
  3. $this->db->query($sql);
  4. $result = $this->db->get_table_hash();
  5. if ($this->db->affected_rows == 0) {
  6. return $this->error(1, true);
  7. }
  8. $tree = array();
  9. for($i=0;$i<=count($result);$i++) {
  10. $tree[$i] = $result[$i];
  11. }
  12. return $tree;
  13. }
  14. public function treeAsHtml() {
  15. $tree = $this->getTree();
  16. $html = "<ul>\n";
  17. for ($i=0; $i<count($tree); $i++) {
  18. $html .= "<li>" . $tree[$i][$this->name];
  19. if ($tree[$i]['level'] < $tree[$i+1]['level']) {
  20. $html .= "\n<ul>\n";
  21. } elseif ($tree[$i]['level'] == $tree[$i+1]['level']) {
  22. $html .= "</li>\n";
  23. } else {
  24. $diff = $tree[$i]['level'] - $tree[$i+1]['level'];
  25. $html .= str_repeat("</li>\n</ul>\n", $diff) . "</li>\n";
  26. }
  27. }
  28. $html .= "</ul>\n";
  29. return $html;
  30. }


Z góry dziękuję za pomoc.
JoShiMa
Ale chcesz to rozwiązać na poziomie php (wyciągnięcie drzewa w całości i za pomoocą php wczytanie konkretnej gałęzi), czy na poziomie SQL. Jeśli to drugie, to może znajdziesz odpowiedź w tym artykule
andrzej7322
chce to osiągnąc na poziomie php lecz z mysql chce pobrac tablice danych.
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.