![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 16.06.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Wykombinowałem taką funkcje podającą id uzytkownikow podleglych pod parrent_id
funkcja podaje mi prawidłowo 8,9,11,13,14,12,10,17, jak mam zapisać to do tablicy ? Pozdrawiam |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
np. static albo global ;]
|
|
|
![]()
Post
#3
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
A może zamiast kombinować z kilkunastoma zwrotkami i potem jechać while dałbyś w zapytaniu where jakieś id group by to id i w select group_concat? Dostałbyś także wszystkie id odzielone przecinkami i potem już można się bawić, przykładowo konwertując string do tablicy funkcją explode. Zresztą w Twojej wersji też explode można użyć.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 16.06.2010 Ostrzeżenie: (0%) ![]() ![]() |
explode nie wyjdzie bo funkcja nie zwraca tylko wyrzuca na ekran po koleji 2,2,3,4,5,67,
|
|
|
![]()
Post
#5
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Skoro Ci zależy tylko i wyłącznie na znalezieniu userów podległych jedynie konkretnemu innemu o nie prościej użyć:
Inaczej to nieco wygląda jeśli chcesz jeszcze rekurencyjnie sprawdzać, czy pod jakiegoś do tego podległego nie ma podległego kolejnego. Wtedy bowiem bliższe jest Twojemu rozwiązaniu jeśli zachowamy strukturę bazy bez zmian. Zmiany nastąpią w nieco innym podejściu do danych. Zamiast echo pojawi się zapis do tablicy, sama tablica pojawi jako parametr funkcji także.
Od razu mówię, że nie jest to optymalne co robisz i moim zdaniem niepoprawne, bo tworzysz do bazy wiele zapytań zbędnych, które nic nie zwrócą. Do tego kompletnie gubisz zależności. Nie wiesz co jest bezpośrednim podwładnym a co podwładnym podwładnego podwładnego (IMG:style_emoticons/default/winksmiley.jpg) Uwierz, że da się to zrobić lepiej na wiele sposobów, w tym przynajmniej jeden taki, że poślesz jedno zapytanie do bazy, a resztę obrobisz już po stronie PHP. Będziesz tylko sobie "gałązkami manipulował". Lepsze jednak dla wszelkich rekurencyjnych zależności są zmiany w bazie. Poczytaj o drzewkach ip choćby. Optymalizować trzeba pod konkretne zastosowanie i nie ma jednej dobrej metody na wszystkie możliwe warianty.
Powód edycji: [thek]: W przeróbce Twojej metody nie chciałem się już bawić w walidację ( ctype_digit w pierwszym kodzie )
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 251 Pomógł: 34 Dołączył: 7.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Męczyłem się z dobre dwa dni z funkcją rekurencyjną i nie wiedziałem, czemu nie działa, aż znalazłem ten temat. Dzięki thek!
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 8.10.2025 - 20:47 |