![]() |
![]() ![]() |
![]() |
![]()
Post
#21
|
|
Grupa: Zarejestrowani Postów: 179 Pomógł: 0 Dołączył: 8.10.2004 Ostrzeżenie: (0%) ![]() ![]() |
Cytat To jest calego drzewka w gore:) Jak to w górę?? Skoro 1% to pobiera po kolei w dół: 1.2 1.2.4 1.3 |
|
|
![]()
Post
#22
|
|
Grupa: Przyjaciele php.pl Postów: 742 Pomógł: 0 Dołączył: 14.12.2003 Skąd: Gdańsk, Trójmiasto Ostrzeżenie: (0%) ![]() ![]() |
no i o to hwao chodzi:)
|
|
|
![]()
Post
#23
|
|
Grupa: Zarejestrowani Postów: 80 Pomógł: 0 Dołączył: 18.04.2004 Ostrzeżenie: (0%) ![]() ![]() |
A gdyby pobrał path i potem explodem podzielił przez sparator "." do tablicy $x. Później wszystko do drógiej tablicy foreachem.
Wyglądało by to tak $tab[$x[0]][$x[1]][$x[2]] itd. ... Wartość danego wpisu byłaby w $tab[1][5]['value']... I tak wszystkie wiersze przelecieć i mamy wszystko w tablicy, a potem z wyświetleniem, to nie ma problemu? Co o tym myślicie? |
|
|
![]()
Post
#24
|
|
Developer Grupa: Moderatorzy Postów: 2 844 Pomógł: 20 Dołączył: 25.11.2003 Skąd: Olkusz ![]() |
a ile to bedzie zapytan do bazy danych policz (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Jak jedno, to ok |
|
|
![]()
Post
#25
|
|
Grupa: Zarejestrowani Postów: 80 Pomógł: 0 Dołączył: 18.04.2004 Ostrzeżenie: (0%) ![]() ![]() |
jedno zapytanie, które zwraca wszystkie wiersze
ja przelatuje te wiersze i wszystko wrzucam do jednej tablicy wyświetlić tablicę to nie problem Ale jak z szybkością i wydajnością... Duże dane w jednej tablicy? No, ale przecież jakby ktoś chciał tylko fragment drzewka to sobie użyje like 1.5.5% |
|
|
![]()
Post
#26
|
|
Grupa: Zarejestrowani Postów: 1 597 Pomógł: 30 Dołączył: 19.02.2003 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
ze sciezka zapisywana jako string jest taki problem, ze trzeba napisac mechanizm, ktory bedzie to poprawial gdy usuniemy lub przesuniemy dana kategorie...
co do exportu drzewa do pliku txt.. nie widze sensu, nie wiem jak to ma cokolwiek przyspieszyc... przeciez zapytanie mozna cachowac, albo modul, cala strone, kto komu co pasuje |
|
|
![]()
Post
#27
|
|
Grupa: Zarejestrowani Postów: 80 Pomógł: 0 Dołączył: 18.04.2004 Ostrzeżenie: (0%) ![]() ![]() |
Co do przenoszenia to mgłobybyć UPDATE z odpowiednim wyrażeniem regularnym: np. mamy 5.2.6.1. I jeżeli chcemy przesunąć ostatnią grupę x.6.1 do np. 5.3.x to wystarczyłoby zmienić tylko 2 na 3...
Ale jeżeli już istnieje 5.3? Wtedy mógłby wystąpić konflikt. Więc najpierw trzebabyłoby znaleźć ostatnią podgałęź 5.3 i wszystkie podgałęzi 5.2 zmienić na kolejne, ale to byłoby niepraktyczne i należałoby zmienić we wszystkich istniejących tabelach (5.2.6 na 5.2.6+x, a potem przenieść do 5.3). |
|
|
![]()
Post
#28
|
|
Grupa: Przyjaciele php.pl Postów: 742 Pomógł: 0 Dołączył: 14.12.2003 Skąd: Gdańsk, Trójmiasto Ostrzeżenie: (0%) ![]() ![]() |
by the way, jezeli chcesz uzystac parenta w drzewkach IP wystarczy obiac wszystko od ostatniej kropki (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) prawda ze proste?(IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
kirkor: nie moze istniec dwa identyczne pathe, poniewaz cyferki to unikalne ID dla kazdej galezi |
|
|
![]()
Post
#29
|
|
Grupa: Zarejestrowani Postów: 80 Pomógł: 0 Dołączył: 18.04.2004 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(aleksander @ 2005-09-03 23:48:02) kirkor: nie moze istniec dwa identyczne pathe, poniewaz cyferki to unikalne ID dla kazdej galezi hmmm... a czy ja powiedziałem, że będą dwa identyczne pathe... (IMG:http://forum.php.pl/style_emoticons/default/blink.gif) (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) |
|
|
![]()
Post
#30
|
|
Grupa: Przyjaciele php.pl Postów: 384 Pomógł: 6 Dołączył: 11.09.2004 Skąd: Grodzisk Mazowiecki Ostrzeżenie: (0%) ![]() ![]() |
zainteresowałem się ostatnio trochę drzewkami i troszkę poszperałem. Może komuś przyda się:
http://forum.webcity.pl/index.php?act=ST&f=15&t=2461&st=0 Temat na WebCity o drzewkach. http://www.intelligententerprise.com/00102...equestid=291501 http://www.zyxist.com/artykuly.php/drzewa_w_php_i_mysql |
|
|
![]()
Post
#31
|
|
Grupa: Zarejestrowani Postów: 70 Pomógł: 0 Dołączył: 29.08.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Osobiście uważam temat drzewka za trudny i zdradliwy, sam siedziałem około 10 dni nad stworzeniem własnego systemiku. Jeżeli ktoś jest zainteresowany, chętnie podzielę się doświadczeniami a nawet skrypcikiem.
Moje dzewko posiada: - nie ogranoczoną ilość poziomów - możliwość sortowania wewnątrz gałęzi - mozliwość pełnego edytowania nazw w dowolnym miejscu - możliwość usówania z uwzględnieniem zmian w sortowaniu Nie ma natomiast: - przenoszenia gałęzi - usówania całych gałęzi Pozdrawiam. Zainteresowanych proszę o wiadomość na PRIVA |
|
|
![]()
Post
#32
|
|
Grupa: Zarejestrowani Postów: 179 Pomógł: 0 Dołączył: 8.10.2004 Ostrzeżenie: (0%) ![]() ![]() |
A nie lepiej byłoby podzielić się tym ze wszystkimi? Po to właśnie jest ta dyskusja.
ps: pisze się usuwania (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) |
|
|
![]()
Post
#33
|
|
Grupa: Zarejestrowani Postów: 19 Pomógł: 0 Dołączył: 29.10.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Moja wersja drzewka robi wszystko co trzeba, przesuwa całe gałęzie, kasuje podgałęzie itd....
korzystam z trzech pól Id, Id_parent, Order ale wyświetlanie jest rekurencyjnami zapytaniami (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) , co nie rozwiązuje probelmu tego temtatu. Sam jestem ciekaw czy jest jakies sensowne rozwiazanie, jak jest to chetnie je zaimplementuje. |
|
|
![]()
Post
#34
|
|
Administrator PHPedia.pl Grupa: Developerzy Postów: 1 102 Pomógł: 2 Dołączył: 14.09.2003 Ostrzeżenie: (0%) ![]() ![]() |
teles pełno, wystarczy poszukać
|
|
|
![]()
Post
#35
|
|
Grupa: Zarejestrowani Postów: 270 Pomógł: 0 Dołączył: 15.06.2003 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(hwao @ 2005-09-03 10:13:20) Cytat Co do pobierania drzewa, to chyba będzie to coś takiego:
To jest calego drzewka w gore:) a w dol to tak jak ja napisalem chyba najlepiej (mam metode) to ja proponuje:
powinno być szybciej niż LIKE |
|
|
![]()
Post
#36
|
|
Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%) ![]() ![]() |
Cytat ale wyświetlanie jest rekurencyjnami zapytaniami Uzywasz funkcji bazy danych?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Bo w php to juz nie bedzie rekurencja (przynajmniej taka sztuczna) |
|
|
![]()
Post
#37
|
|
Grupa: Zarejestrowani Postów: 521 Pomógł: 0 Dołączył: 3.11.2003 Skąd: 3city Ostrzeżenie: (0%) ![]() ![]() |
Zamiast Nested Sets polecam Nested Intervals. Odpada problem z wstawianiem. Linka kiedyś podawałem, potem zgubiłem, a całość jest trudna do zrozumienia i być może Oracle-only.
A w ogóle to można zostać przy ID parenta i zrobić CONNECT BY (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) . |
|
|
![]()
Post
#38
|
|
Administrator PHPedia.pl Grupa: Developerzy Postów: 1 102 Pomógł: 2 Dołączył: 14.09.2003 Ostrzeżenie: (0%) ![]() ![]() |
hawk, link jest w komentarzach do artykułu o drzewkach z wortalu
btw zyjesz ;D |
|
|
![]()
Post
#39
|
|
Grupa: Zarejestrowani Postów: 740 Pomógł: 15 Dołączył: 23.08.2004 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Nested sets (zbiory zagnieżdżone) to ciekawy mechanizm nastawiony na mozliwie szybki odczyt drzewa. Dodawanie i modyfikowanie niestety wiaze sie z koniecznoscia aktualizacji indeksow przewaznie wiekszosci rekordow w tabeli. Nie objecie takich operacji transakcja grozi utrata spujnosci struktury.
Osobiscie eksperymentujac z ta metoda oprocz indeksow lewy i prawy zachowalem rowniez parent_id w celu ewentualnej rekurencyjnej odbudowy srtuktury. Dodalem tez pole level co ulatwilo mi wyswietlanie ograniczonej liczby zaglebien wybranej galezi. Dodalem tez pole position (mozna by je nazwac order) gdyz jego wartosc wskazuje na miejsce danego liscia lub galezi w ramach swojego poziomu. Dzieki temu wybiegowi zmiana pozycji w ramach poziomu wymaga jedynie aktualizacji wartosci position elementow tej samej galezi i na tym samym poziomie, a nie przebudowy calych indeksow lewy prawy. Poza tym w przypadku wystapienia niespojnosci struktury drzewa, ponowna przebudowa oparta o id, nie powoduje zmiany kolejnosci elementow w ramach poziomu Na moim drzewie mozna: - pobierac pojedynczy element, cale galezie, - pobierac okreslona liczbe poziomow z drzewa lub wybranej galezi, - pobierac przodkow wybranego elementu, - pobrac przodkow o wybrana liczbe leweli w gore, - dodawac nowe elementy, - usuwac liscie i cale galezie, - usuwac rodzica zachowujac jego potomkow, - przesuwac liscie w ramach danego poziomu lub calego drzewa, - przesuwac cale galezie w gore, dol, w prawo oraz w lewo - odbudowac strukture drzewa w razie "powiklan" Pisze artykul na ten temat (jakos nie mam czasu aby go dokonczyc) Jak mi uruchomia PHP5 na serwerze to wrzuce demo do przetestowania i dorzuce wspomniany artykul. Mysle ze zrobilem fajny mechanizm jednak zdaje sobie sprawe z jego niedoskonalosci wynikajacych glownie ze wspomnianych juz wyzej trudnosci przy dodawaniu elementu lub modyfikacji struktury. Przy budowie np. forum o ograniczonej liczbie zaglebien, czestej aktualizacji tresci wybralbym raczej inne rozwiazanie - Drzewa Depesza, albo IP (tak na marginesie zastanawiam sie w polu jakiego typu w bazie trzymane sa id oraz sciezka danego elementu - w varchar czy raczej text?) Co do zrzucania struktury drzewa do pliku to ja ograniczylbym sie jedynie (zresta podejrzewam, ze oto wlasnie chodzi) do zrzucenia id i parent_id i na tej podstawie konstruowal zapytanie do bazy danych. |
|
|
![]()
Post
#40
|
|
Grupa: Zarejestrowani Postów: 197 Pomógł: 0 Dołączył: 11.07.2005 Ostrzeżenie: (0%) ![]() ![]() |
Nie rozumiem trochę zastosowań drzewa. Jak w jednej tabeli można przechowywać zarówno newsy, jak i artykuły i bóg wie co jeszcze ? Przecież każdy z tych przykładów potrzebuje innych danych. Można by wprawdzie w drzewie dodać pole table mówiąze w jakiej tabeli znajduje się dany news, artykuł itp., ale mija się to z ideą drzewa :/
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.10.2025 - 22:16 |