![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 141 Pomógł: 1 Dołączył: 2.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Opracować musze drzewo o wielokrotnym zagniezdzeniu, jednak mi to nie wychodzi - pewnie z braku wiedzy w dziedzinie php. Mam tabele w takiej formie Id | sub | poziom | pozycja | name 3. | 0 | 0 | 1 | A 2. | 1 | 1 | 1 | B 1. | 2 | 2 | 2 | C 4. | 2 | 2 | 1 | D 5. | 1 | 1 | 1 | E 6. | 0 | 0 | 0 | F Struktura powinna wobec tego wyglądać tak: A. - B -- D -- C - E FRozpisałem sobie taki algorytm Kod for ($i=1; $i<=$rows; $i++){ echo $id[$i]; $t[] = NULL; for ($j=1; $j<=rows; $j++){ if ($sub[$j] == $id[$i] AND $sub[$j] != t[$j]){ for ($k=0; $k<=count($t);$k++){ echo $id[$j]; $t[$j] == $id[$j] } } } } Niestety kod nie działa tak jak zamierzałem, z racji że nie wiem jak zdefiniować te tabele, bo mają pełnić one role taką że jeżeli znajdzie element w pętli J i wyświetli dany element, to ID tego elementu powinno zostać zapisane w BD, by algorytm mógł je pominąc przy kolejnym sprawdzaniu sprawdzaniu. Tylko. Zaś jak przejdzie do inkrementacji I to tabela powinna zostać wyczyszczona. Nie wiem czy dobrze rozumuje, prosiłbym was o pomoc z rozwiązaniem tego, bo sobie nie potrafie z tym dać rady, co do powyższych tabel, to opcjonalnie powinno wystarczyć id i sub alternatywnie poziom określa poziom zagłębienia 0 - główne, 1 -pz pierwszy, 2 - pz drugi itd. W sumie to zależy mi do zagłębienia do poziomu 3, ale jeżeli by realizowało to więcej zagłębień było by bardziej przyszłościowe, bym za pare miesięcy nie musiał się zastanawiać jak 4 poziom czy 5 zrealizować. Ten post edytował xajart 23.01.2009, 11:21:04 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 286 Pomógł: 70 Dołączył: 13.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Niestety ten skrypt tego nie zrobi bo nie odnosi się w żaden sposób do kolumny SUB Chyba się mylisz? Przecież masz w zapytaniu warunek WHERE sub... Zrobiłem sobie tabelę, w której umieściłem rekordy tak: Kod ID SUB POZYCJA NAME 1 0 1 A 2 1 2 B 3 1 2 C 4 2 3 D i wynik funkcji drzewo() otrzymałem: Kod ---A ------B ---------D ------C Dla mnie oznaczenie A,B,C jest zupełnie niepotrzebne... Tak samo jak POZYCJA, ponieważ funkcja może sama określić pozycję poprzez inkrementację dodatkowego atrybutu, no ale to w tym konkretnym założeniu... Ten post edytował EarthCitizen 25.01.2009, 06:34:11 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 10.10.2025 - 06:38 |