![]() ![]() |
Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 304 Pomógł: 1 Dołączył: 12.01.2009 Skąd: Kanapa Ostrzeżenie: (0%)
|
Witam,
mam taki problemik... potrzebuje zrobić liste <ul><li> z tabeli.. niby pierdoła ale mam problem bo musze sprawdzić czy ma 'dzieci'. tabela wyglada tak ->
A struktura musi wyglądać tak: Jeśli ma potomków to jest rel="folder" tylko teraz jak to sprawdzić ? Ten post edytował Mayka 7.11.2012, 14:37:06 |
|
|
|
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 1 675 Pomógł: 286 Dołączył: 15.06.2009 Skąd: Wieliczka Ostrzeżenie: (0%)
|
utworzyć na bazie tej tablicy drugą, zawierającą już poukładane elementy (przelatujesz po obecnej i dodajesz do tablicy o indeksie parent nowy element)
|
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 304 Pomógł: 1 Dołączył: 12.01.2009 Skąd: Kanapa Ostrzeżenie: (0%)
|
No i za kazdym razem jak któryś element zostanie dodany, lub zmienione jego miejsce mam robić tablce ? Pozatym przesortować to można w zapytaniu mysql, tylko co to daje, bo nie bardoz rozumiem..?
|
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 6 381 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%)
|
Gdybyś miał gotową tablicę wyników lepiej zrobioną łatwiej po niej jeździć iteratorami SPL http://php.net/manual/en/book.spl.php (w zasadzie sprawdzić tylko czy value jest tablicą) i do tego serwer BD wykona to szybciej niż parsowanie rekordów w PHP i tworzenie nowych sub tablic.
Ten post edytował viking 7.11.2012, 15:49:35 |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 304 Pomógł: 1 Dołączył: 12.01.2009 Skąd: Kanapa Ostrzeżenie: (0%)
|
Gdybyś miał gotową tablicę wyników lepiej zrobioną łatwiej po niej jeździć iteratorami SPL co masz na myśle mówiąc jepiej zrobioną ? Jeszcze moge ją przeprojektować (IMG:style_emoticons/default/wink.gif) |
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 341 Pomógł: 40 Dołączył: 23.06.2009 Ostrzeżenie: (0%)
|
przy odpowiedniej strukturze tabel w mysql - te informacje mozesz uzyskac juz z bazy danych (jak rowniez odpowiednie posortowanie)
tutaj chyba kiedys popelnilem jakiegos posta http://forum.php.pl/index.php?showtopic=13...t=0#entry955679 j. |
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 9 Dołączył: 7.04.2011 Ostrzeżenie: (0%)
|
Jeśli dane pobierane są z bazy to posortowałbym ją według 'parent'. Następnie w pętli (funkcji rekurencyjna) dorzucałbym do tablicy X-wymiarowej kolejne wiersze... Najważniejsze, żeby wynik z bazy był już posortowany na podstawie pola 'parent' (żeby nie opuścić żadnego elementu)...
|
|
|
|
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 1 675 Pomógł: 286 Dołączył: 15.06.2009 Skąd: Wieliczka Ostrzeżenie: (0%)
|
Jeśli dane pobierane są z bazy to posortowałbym ją według 'parent'. Następnie w pętli (funkcji rekurencyjna) dorzucałbym do tablicy X-wymiarowej kolejne wiersze... Najważniejsze, żeby wynik z bazy był już posortowany na podstawie pola 'parent' (żeby nie opuścić żadnego elementu)... to jest dokładnie to o czym mówiłem (IMG:style_emoticons/default/smile.gif) |
|
|
|
Post
#9
|
|
|
Grupa: Zarejestrowani Postów: 341 Pomógł: 40 Dołączył: 23.06.2009 Ostrzeżenie: (0%)
|
@zbychoCom, @Pawel_W
można.... ale po co?? rekurencja? brrr.. coś takiego się robi jednym zapytaniem i jednym przejściem po elementach. koniec kropka. j. ps swoja droga, to co proponujecie - czyli drzewo oparte na parentId jest klasycznym przykładem antywzorca sql.. czasem się to stosuje, ale są o wiele wydajniejsze struktury. Ten post edytował alegorn 7.11.2012, 16:55:02 |
|
|
|
Post
#10
|
|
|
Grupa: Zarejestrowani Postów: 304 Pomógł: 1 Dołączył: 12.01.2009 Skąd: Kanapa Ostrzeżenie: (0%)
|
@zbychoCom, @Pawel_W można.... ale po co?? rekurencja? brrr.. coś takiego się robi jednym zapytaniem i jednym przejściem po elementach. koniec kropka. j. ps swoja droga, to co proponujecie - czyli drzewo oparte na parentId jest klasycznym przykładem antywzorca sql.. czasem się to stosuje, ale są o wiele wydajniejsze struktury. No dobra ale wszycycy napisali mniejwiecej jak to zrobić a ty mówisz że robi się jednym zapytaniem, a mogłbyś konkretniej ? Bo nie bardzo wiem co masz na myśli... |
|
|
|
Post
#11
|
|
|
Grupa: Zarejestrowani Postów: 341 Pomógł: 40 Dołączył: 23.06.2009 Ostrzeżenie: (0%)
|
a patrzyłeś w link jaki podałem?
drzewka - temat maglowany jest przez programistów, od czasu gdy ktoś sobie wymyślił taka strukturę, a wiec od baaaardzo dawna. wiem o 4 metodach ich przechowywania w bazie danych (omawiane kilku krotnie tu na forum), tak naprawde każde ma swoje wady i zalety, kwestia odpowiedniego wyboru dla konkretnego problemu.. w książce http://helion.pl/ksiazki/antywzorce-jezyka...rwin,antysq.htm znajdziesz opis 3 z nich z czego przykład z parent id jest podawany jako antywzorzec. poczytaj sobie o metodzie trawestacji czy tez o nested tree (jakos tak to sie pisze) w podanym powyżej linku dałem ci przykład SQL który wybiera drzewko posortowane, każdy rekord jest opisany na którym jest poziomie (lvl) oraz opisane ile ma elementów pod sobą (child_count). oczywiście drzewko jest posortowane inteligentnie wg zależności drzewka - czyli z MySQL'a dostajesz w dokładnie takiej kolejności w jakiej masz wyświetlić na stronie.... coś a'la : wezel0 wezel0.1 wezel0.2 wezel0.2.1 wezel0.2.2 wezel0.3 wezel0.4 wezel0.4.1 wezel0.4.1.1 masz posortowane drzewo, masz poziom na którym się znajduje element, ilość potomków... czego chcieć więcej (IMG:style_emoticons/default/questionmark.gif) (IMG:style_emoticons/default/questionmark.gif) w dodatku, skrypt działa dla dowolnej liczby zagłębień... (jednym zapytaniem) konia z rzędem dla tego co wykona to dla struktury opartej o parent_id... j. Ten post edytował alegorn 8.11.2012, 09:23:05 |
|
|
|
![]() ![]() |
|
Aktualny czas: 21.12.2025 - 04:27 |