![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Mam taki schemat:
(IMG:http://spenalzo.republika.pl/schemat.gif) :arrow: http://spenalzo.republika.pl/schemat.gif (wybaczcie za koślawy rysunek) Jest to schemat powiązań pomiędzy użytkownikami: R - root (ja) R.1-R.6 - moi znajomi A-H - znajomi R.1-R.6 (tutaj dla uproszczenia schematu po jednym) A.1-H.6 - znajomi A-H Oczywiście mogą potem być dalej różne inne powiązania (np. A.1.1.1-A.1.2.6 itd itp) - ale ja widze tylko od poziomu R do ostatniego na schemacie czyli A.1-H.6 Powiazania pomiędzy użytkownikami są zależne w taki sposób, że jeżeli dodam nowego znajomego to wszyscy (do 3 poziomu zaglębienia) widzą jego, ci na 2 poziomie widzą jego i jego znajomych na I poziomie itd. Natomiast ja widzę jego znajomych do 3 poziomu, czyli schemat się powtarza. Z kolei użytkownicy na 6 poziomie widzą moich znajomych na 3 poziomie. W jaki sposób rozpracować strukture tych powiazań i w jakim stopniu przerzucić "ciężar" tych powiązań na php a w jakim stopniu na MySQLa? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 0 Dołączył: 30.11.2003 Ostrzeżenie: (0%) ![]() ![]() |
Jak zawsze przeczytałem swojego posta dopiero po wysłaniu i stwierdziłem, że strasznie zaciemniłem tę procedurą do przeglądania wzdłużnego. Więc teraz zapisuję w pseudokodzie, żebyś się mógł przejść po drzewku i zobaczyć jak to działa (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) :
Kod procedure ogladacz(wezel)
begin if(wezel != NULL) begin wezel.lft = i+1; weź pierwsze dziecko od lewej; while(sa jeszcze dzieci) begin ogladacz(dziecko); weź następne dziecko; end wezel.rgt = i+1; end end Pozdrowienia |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 02:26 |