Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php]rysowanie drzewa
matyskiewicz
post
Post #1





Grupa: Zarejestrowani
Postów: 184
Pomógł: 3
Dołączył: 6.10.2006
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Witam serdecznie. borykam się z pewnym problemem.
Mam w bazie danych:
  1. INSERT INTO kategorie2 VALUES('1', 'Sprzet AGD', '-1');
  2. INSERT INTO kategorie2 VALUES('2', 'Pralki', '1');
  3. INSERT INTO kategorie2 VALUES('3', 'Lodówki', '1');
  4. INSERT INTO kategorie2 VALUES('4', 'Sprzęt RTV', '-1');
  5. INSERT INTO kategorie2 VALUES('5', 'TV', '4');
  6. INSERT INTO kategorie2 VALUES('6', 'LCD', '5');
  7. INSERT INTO kategorie2 VALUES('7', 'CRT', '5');
  8. INSERT INTO kategorie2 VALUES('8', 'Białe', '7');
  9. INSERT INTO kategorie2 VALUES('9', 'Czarne', '7');

pragnę zbudować drzewo:
Sprzet AGD
-- pralki
-- lodowki
Sprzet RTV
-- TV
---- LCD
---- CRT
------ biale
------ czarne
jak widać trzeci parametr bazy danych kiedy równa się -1 to nazwa kategorii
natomiast kiedy jest równy pierwszemu wyświetla się pod spodem. (subkategoria).
  1. <?php
  2. if($_row['PodKategoria']==-1) {
  3. echo "<b>".$_row['NazwaK']."</b><br />";
  4. } else {
  5. echo "--".$_row['NazwaK']."<br />";
  6. ...
  7. ?>

dzięki temu skryptowi wyświetlam wszystkie podkategorie pierwszego rzedu (np pralki, tv) za wyszczegulnieniem --, lecz jak zrobić by do kolejnego poziomu dodac kolejne --

Ten post edytował matyskiewicz 1.08.2007, 20:09:26
Go to the top of the page
+Quote Post
drPayton
post
Post #2





Grupa: Zarejestrowani
Postów: 890
Pomógł: 65
Dołączył: 13.11.2005
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


Rekursja, fragment "rysujący" drzewo zamknij w funkcji rekursywnej...

Ten post edytował drPayton 2.08.2007, 10:31:09
Go to the top of the page
+Quote Post
toolmaniak
post
Post #3





Grupa: Zarejestrowani
Postów: 77
Pomógł: 0
Dołączył: 29.05.2006
Skąd: /dev/null

Ostrzeżenie: (0%)
-----


Może looknij na artykuł zamieszczony TU
Go to the top of the page
+Quote Post
matyskiewicz
post
Post #4





Grupa: Zarejestrowani
Postów: 184
Pomógł: 3
Dołączył: 6.10.2006
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Cytat(drPayton @ 2.08.2007, 11:29:29 ) *
Rekursja, fragment "rysujący" drzewo zamknij w funkcji rekursywnej...

mógłbym prosić jaśniej?

#toolmaniak dziękuję za artykuł, zaraz go przestudiuje.
Go to the top of the page
+Quote Post
drPayton
post
Post #5





Grupa: Zarejestrowani
Postów: 890
Pomógł: 65
Dołączył: 13.11.2005
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


Rekursja: funkcja wywołuje sama siebie ze zmienionymi parametrami. Parametrem może być np poziom zagnieżdżenia drzewa i np:
  1. <?php
  2. function set_tree($nodeLevel=1, $nodeParent=0)
  3. {
  4.  $nodeElements = my_mysql_query_function("SELECT * FROM tabela WHERE parent = {$nodeParent}");
  5. $margin = $nodeLevel * 10;
  6. foreach($nodeElements AS $element) {
  7. echo "<div style="margin-left:{$margin}px;">Element: {$element['pole']}</div>";
  8. set_tree($nodeLevel+1, $element['id']);
  9. }
  10.  
  11. }
  12. ?>

W tym przykładzie gałęzie będą oznaczane marginesami.

Ten post edytował drPayton 2.08.2007, 17:52:28
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 12.10.2025 - 20:43