Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] [mysql] Drzewo
Forum PHP.pl > Forum > Przedszkole
kkriss
Witam
Mam sobie tabelą MYSQL np z takimi danymi


poz1 poz2
0 123
123 124
0 125
125 126
125 127

I teraz chodzi aby zrobić taki skrypt który to uporządkuje na postać drzewa wyświetlając np tak:

Aby zrobić z tego drzewo
0
| - 123 - 124
| - 125 - 126
-------| - 127

Może ktoś zapodać jaakieś tematy z którymi powinienem się zapoznać aby to zrobić?
Ewentualnie może ktoś ma dokładny przykład.
Pozdrawiam
Ludvik
To nie jest takie trudne. Musisz mieć tylko pobrać dane i posiadać odpowiednią klasę. Przydał by się też rekursywny iterator, albo funkcja do tego...

Prosta klasa, której nie sprawdzałem. Ważne, żebyś załapał o co chodzi...
  1. <?php
  2. class ID {
  3. public function __construct($iId) {
  4. $this->id = $iId;
  5. }
  6.  
  7. public function addChild(ID $child) {
  8. if (isset($this->id[$child->getId()])) {
  9. throw new Exception();
  10. }
  11. $this->children[$child->getId()] = $child;
  12. }
  13.  
  14. public function getChild($iId) {
  15. return isset($this->children[$iId]) ? $this->children[$iId] : null;
  16. }
  17.  
  18. public function getChildren() {
  19. return $this->children;
  20. }
  21.  
  22. protected $id;
  23. protected $children = array();
  24. }
  25. ?>


Dane pobierasz tak:
  1. <?php
  2. $idList = array(=> new Id(0));
  3. $parents = array();
  4. $result = mysql_query('SELECT * FROM tabela');
  5. while ($row = mysql_fetch_assoc($result)) {
  6. if (!isset($idList[$row['poz1']])) {
  7. $idList[$row['poz1']] = new Id($row['poz1']);
  8. }
  9. if (!isset($idList[$row['poz2']])) {
  10. $idList[$row['poz2']] = new Id($row['poz2']);
  11. }
  12. $parents[$row['poz2']] = $row['poz1'];
  13. }
  14.  
  15. foreach ($parents as $child => $parent) {
  16. $idList[$parent]->addChild($idList[$child]);
  17. }
  18. ?>


Wyświetlanie najlepiej w postaci rekursywnego iteratora albo funkcji rekursywnej...
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.