Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Nested Sets - przenoszenie węzłów i liści góra/dół
grz16w
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 14.07.2009
Skąd: Rzeszów

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


Witam.

Czy ktoś wie lub posiada przykład działającej poprawnie funkcji przesuwania liści i węzłów w strukturze Nested Sets wewnątrz jednej gałęzi (rodzica)? Mam tabelę posiadającą kolumny `id`, `nazwa`, `lft`, `rgt`, `parent`. W jaki sposób zamienić miejscami dwa węzły lub liście wewnątrz tego samego rodzica (uwzględniając, że te węzły mogą posiadać również swoje dzieci itd.)? Z góry dziękuję serdecznie za odpowiedzi (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
JoShiMa
post
Post #2





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


Cytat(grz16w @ 10.04.2011, 22:42:12 ) *
Witam.

Czy ktoś wie lub posiada przykład działającej poprawnie funkcji przesuwania liści i węzłów w strukturze Nested Sets wewnątrz jednej gałęzi (rodzica)?


Czytałeś to: przenoszenie gałęzi ?
Go to the top of the page
+Quote Post
grz16w
post
Post #3





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 14.07.2009
Skąd: Rzeszów

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


Cytat(JoShiMa @ 11.04.2011, 11:24:51 ) *
Czytałeś to: przenoszenie gałęzi ?

tak, czytałem i w podobny sposób zrobiłem inne funkcje, czyli przenoszenie gałęzi, a nie zamiana miejscami (wewnątrz jednej gałęzi nadrzędnej). Nie wiedziałem jak z tego to drugie wykombinować (IMG:style_emoticons/default/smile.gif)

Crozin, wielkie dzięki, świetny opis, już się biorę do roboty (IMG:style_emoticons/default/smile.gif) mam nadzieję że się uda bo tylko ta funkcja mi została do opracowania (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
JoShiMa
post
Post #4





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


Cytat(grz16w @ 11.04.2011, 15:13:30 ) *
tak, czytałem i w podobny sposób zrobiłem inne funkcje, czyli przenoszenie gałęzi, a nie zamiana miejscami (wewnątrz jednej gałęzi nadrzędnej). Nie wiedziałem jak z tego to drugie wykombinować (IMG:style_emoticons/default/smile.gif)


Ale to nie ma znaczenia gdzie przenosisz. Istotą jest tylko żeby prawidłowo obliczyć miejsce.
Go to the top of the page
+Quote Post
grz16w
post
Post #5





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 14.07.2009
Skąd: Rzeszów

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


Cytat(JoShiMa @ 11.04.2011, 22:38:11 ) *
Ale to nie ma znaczenia gdzie przenosisz. Istotą jest tylko żeby prawidłowo obliczyć miejsce.


Mój błąd, masz rację, właśnie skończyłem tą opcję i faktycznie to tak funkcjonuje (IMG:style_emoticons/default/wstydnis.gif) a korzystając z okazji miałbym jeszcze jedno pytanko. Czy jest możliwość obliczenia "głębokości" danego węzła/liścia mając do dyspozycji jedynie pola `lft`, `rgt`, `parent` bez możliwości stworzenia dodatkowej kolumny np. `depth`? (IMG:style_emoticons/default/smile.gif)

Ten post edytował grz16w 11.04.2011, 22:04:52
Go to the top of the page
+Quote Post
JoShiMa
post
Post #6





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


Cytat(grz16w @ 11.04.2011, 22:02:31 ) *
Mój błąd, masz rację, właśnie skończyłem tą opcję i faktycznie to tak funkcjonuje (IMG:style_emoticons/default/wstydnis.gif) a korzystając z okazji miałbym jeszcze jedno pytanko. Czy jest możliwość obliczenia "głębokości" danego węzła/liścia mając do dyspozycji jedynie pola `lft`, `rgt`, `parent` bez możliwości stworzenia dodatkowej kolumny np. `depth`? (IMG:style_emoticons/default/smile.gif)

Oczywiście i nawet parent nie jest potrzebne i to wcale nie jest skomplikowane (Crozin opowiada bzdury). W cyklu artykułów z którego jeden Ci podesłałam jest to pokazane. Chyba w trzecim z serii. W jednym niezbyt skomplikowanym zapytaniu możesz wyciągnąć dowolną gałąź i od razu policzyć depth dla wszystkich jej elementów/ Dodając w takim zapytaniu klauzlę HAVING wyciąg asię tylko wskazany poziom. Bułka z masłem.

--- EDIT ---

Tak czysto logicznie. Wystarczy policzyć ile elementów ma jednocześnie lft mniejszy i rgl większy od tego, który badasz. Policzysz w ten sposób wszystkie elementy, które okalają wskazany a więc sa dla niego nadrzędne. Proste, nie?

@Crozin naucz się wreszcie tego, no nie trudne a może przestaniesz straszyć ludzi.

Ten post edytował JoShiMa 11.04.2011, 22:45:36
Go to the top of the page
+Quote Post

Posty w temacie
- grz16w   Nested Sets - przenoszenie węzłów i liści góra/dół   10.04.2011, 22:42:12
- - Crozin   Zanim zapomnę: o ile dobrze pamiętam phpBB3 albo j...   10.04.2011, 23:13:45
- - jang   http://www.phpriot.com/articles/nested-trees-2/7 ...   11.04.2011, 08:18:26
- - JoShiMa   Cytat(grz16w @ 10.04.2011, 22:42:12 )...   11.04.2011, 10:24:51
|- - grz16w   Cytat(JoShiMa @ 11.04.2011, 11:24:51 ...   11.04.2011, 15:13:30
|- - JoShiMa   Cytat(grz16w @ 11.04.2011, 15:13:30 )...   11.04.2011, 21:38:11
|- - grz16w   Cytat(JoShiMa @ 11.04.2011, 22:38:11 ...   11.04.2011, 22:02:31
|- - JoShiMa   Cytat(grz16w @ 11.04.2011, 22:02:31 )...   11.04.2011, 22:37:33
- - Crozin   Można ale jest to dosyć skomplikowane, a trzymanie...   11.04.2011, 22:08:23
- - Crozin   @JoShiMa: Szkoda tylko, że nie dodałeś że dynamicz...   11.04.2011, 22:59:11
|- - JoShiMa   Cytat(Crozin @ 11.04.2011, 22:59:11 )...   11.04.2011, 23:08:01
- - Crozin   CytatLub podzapytania. I nie odwracaj kota ogonem....   11.04.2011, 23:32:32
|- - JoShiMa   Cytat(Crozin @ 11.04.2011, 23:32:32 )...   11.04.2011, 23:38:53
- - wiewiorek   Joshima napisal: "@Crozin naucz się wreszcie ...   12.04.2011, 07:55:05
|- - JoShiMa   Cytat(wiewiorek @ 12.04.2011, 07:55:0...   12.04.2011, 09:24:17
- - grz16w   Więc tak.. Użyłem metody: CytatSELECT node.name, ...   12.04.2011, 10:39:37
- - JoShiMa   A to zapytanie wywołujesz w bazie czy w skrypcie P...   12.04.2011, 11:03:46
- - grz16w   Wykonuję to zapytanie przez PHP. Gdy wykonuję w pa...   12.04.2011, 11:27:00
|- - JoShiMa   Cytat(grz16w @ 12.04.2011, 11:27:00 )...   12.04.2011, 21:52:17
- - Crozin   CytatCytatTo podzapytanie to o ile się nie mylę (j...   12.04.2011, 16:53:32
- - Crozin   Nic nie oszukuję. Przecież przy przenoszeniu i tak...   12.04.2011, 21:55:07


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: 26.12.2025 - 15:44