Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Poruszanie się po drzewku, zarządzanie menu
Gabrielx
post
Post #1





Grupa: Zarejestrowani
Postów: 157
Pomógł: 2
Dołączył: 24.03.2009

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


Witam posiadam takie oto drzewko. Kazda z galezi ma swoje pola: parent, id i złóżmy matrix
----------------------- 1
---------------------- /--\
-------------------- 2-----3
------------------- /-\
------------------ 4--5
----------------- /|\
---------------- 6-7-8

Chciałbym teraz się poruszyć po tym drzewku, zaczynając od pozycji nr 1, do 8 w celu podmienienia matrix - wszystkie pola które napotka żeby były nadpisane (np. zaczynamy od 1, to przechodzi do 2 i tworzy 1/2, potem z 2 do 4 to 1/2/4).
Np. Jeśli zaczynamy od pozycji 2 to żeby nadpisało tylko 4,5,6,7,8 bez 1,3.
Mam na myśli głównie skrypt który by pobierał z DB parent i schodził niżej. Nie byłoby problemu z tym gdyby drzewko nie miało rozgałęzień.

Nie jest to nested set. Jest to moja implementacja bazująca na tym:
http://4programmers.net/SQL/Zaawansowane_drzewa_w_MySQLid

Ten post edytował Gabrielx 27.10.2012, 15:22:15
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
KotWButach
post
Post #2





Grupa: Zarejestrowani
Postów: 361
Pomógł: 10
Dołączył: 8.02.2012

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


To nieco przypomina drzewo BST ale to twoje jest powolne... Tak sądzę ale mogę się mylić ponieważ dopiero wgłębiam się w ten temat. Co do drzew BST na necie mozna znaleźć gotowe klasy.
Go to the top of the page
+Quote Post
Gabrielx
post
Post #3





Grupa: Zarejestrowani
Postów: 157
Pomógł: 2
Dołączył: 24.03.2009

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


O widzisz, bo czy powolne czy nie to mnie nie obchodzi zbytnio w tym momencie, ważne aby działało - implementuje to do Zend Framework, i później po każdym dodanym rekordzie jest generowany plik .ini z DB z własnościami menuj.

Też się w ten temat dopiero zagłębiam, przez dłuższy czas zastanawiałem się nad Nested Set, lecz jak przejżałem to uznałem że jest nieco skomplikowane.

Ogólnie wymyśliłem pewne rozwiązanie, ocencie czy dobrze myślę:

Załózmy jesteśmy w id=4 i aby się po nim poruszać to po prostu, dodajemy kolumne count_children która liczy rodziców, po czym szukamy id = 4 w parent. Wyświetlą się nam 3 wyniki (tak jak w count children) 6,7,8, dajemy to do tablicy jako nowe rekordy, i później jeśli te id mają kolejne dzieci, to w dalszym stopniu dodajemy wiersze w tablicy. Później po dodaniu wszystkich elementów w tablicy następuje nadpisywanie wszystkiego.
Go to the top of the page
+Quote Post
KotWButach
post
Post #4





Grupa: Zarejestrowani
Postów: 361
Pomógł: 10
Dołączył: 8.02.2012

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


nie wymyślaj już wymyślonego.

To jak tak to może kopiec binarny? gdzie każda kolejna linia to kolejno
1
2 3
4 5 6 7
8 9 10 11 12 13 14 15
16[...]

1
2
2 do 2
2 do 3
2 do 4

a wiec
masz left.child[]
oraz right.sibling[]

a co do twojej wypowiedzi " bo czy powolne czy nie to mnie nie obchodzi zbytnio " jest to raczej brak wiedzy w zakresie informatyki, algorytmiki lub ignorancja dotycząca tego zagadnienia. Drzewa binarne powstały po to by zaoszczędzić pracy procesorowi nic poza jak nei zależy ci na wydajności po prostu daj kolejkę listę cokolwiek prostszego i po kłopocie.

Ten post edytował KotWButach 28.10.2012, 00:33:36
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 20.08.2025 - 06:34