![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 108 Pomógł: 0 Dołączył: 30.04.2016 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
napisałem mini portal do którego można zarejestrować się podając maila osoby która nas poleciła podczas rejestracji. Skrypt automatycznie przypisuje naszemu rekordowi w bazie maila tej osoby dzięki której założyliśmy konto. Nasz rekord w bazie wygląda mniej więcej tak: Imię Nazwisko Email hasło osobap(emal osoby polecajacej) Jan Kowalski jak.kowalski@wp.pl jojpoejpfw rysiek.nowak@wp.pl I teraz tworze drzewo poleceń. Pobieram maila zalogowanego użytkownika (rysiek.nowak@wp.pl) i wyświetlam pod nim wszystkie maile jeden pod drugim które mają w bazie jako "osobap" email rysiek.nowak@wp.pll i są to osoby które założyły konto dzięki Ryśkowi. Ale zanim pobiorę wszystkie tę maile po wczytaniu pierwszego rekordu z bazy dajmy na to "Jana" daje następną pętle która sprawdza czy "syn" Ryśka Jan też ma osoby pod sobą i dla nich też wyświetla jego "synów" i tak do 4 poziomów. Napisałem strasznie słaby skrypt metodą kombinowania żeby tylko działał. Użyłem spacji żeby tworzyła się struktura drzewiasta ![]() Wynik skryptu wygląda tak: Rysiek twoje drzewo: jan.kowalski@wp.pl ---------marlena@er.pl ---------jacek.dobry@ert.pl milena@tralala.pl andrzej@te.pl ---------michal@rerer.pl ---------grazyna@wewewe.pl ------------------bronislaw@perrt.pl ------------------czarek@resergr.pl mietek@wp.pl itd... Jeszcze jest dodana zmiana koloru wyświetlenia zależnie od tego czy użytkownik jest aktywny czy nie ale to nie jest ważne. I z góry uprzedzam pytania, tak wiem że to wszystko mogło by być w jednej pętli. I tak: chciałbym żeby wyświetlenie było bardziej profesjonalne i ruchome. Czyli wyświetlają się tylko użytkownicy pod zalogowanym użytkownikiem i żeby wyświetlić synów tych użytkowników trzeba kliknąć plusik i następny plusik żeby wyświetlić następne poziomy. Wszystko połączone kreskami i ustawione poziomami. Jak np. tutaj: http://domanart.pl/dema/drzewo-plikow/index.php Wiem że drzew jest pełno w sieci ale działają na zasadzie mam już pewną liczbę użytkowników wyświetlę ich JS'em i albo Ajax'em i jest ładne ruchome drzewo. Ale jeśli nie ma się ustalonej liczby użytkowników i ta liczba ciągle się zmienia to już dla mnie zaczynają się schodki. Próbowałem przerabiać coś takiego ale nie wiem jak przekazać dane wyciągnięte z bazy do JS'a za pomocą phpa. Czy w ogóle można łączyć phpa i JS'a? Poniżej wklejam kod mojego skryptu. Proszę o podpowiedzi jak z tego wybrnąć.
Kurcze, nikt nie jest w stanie pomóc? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Próbowałem przerabiać coś takiego ale nie wiem jak przekazać dane wyciągnięte z bazy do JS'a za pomocą phpa.
Tada -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 108 Pomógł: 0 Dołączył: 30.04.2016 Ostrzeżenie: (0%) ![]() ![]() |
Ok już wiem jak wyświetlić daną z php w JS.
Teraz jak powiedzmy wyjmę z bazy, do pewnej zmiennej liczbę osób w z pierwszego poziomu metoda num_rows i jeden cały poziom do tablicy asocjacyjnej stworzę pętle w JS żeby wyświetlić kolejne osoby z poziomu. To jak teraz zrobić żeby wyświetlić pierwszą osobę z tablicy w drzewie javascriptem potem znowu wczytać kolejną i znowu wyświetlić w drzewie? Czy javascript nie potrzebuje już całej struktury pobranej z bazy np. do tablicy żeby wyświetlić drzewo z tego co ma? Czy mogę pobierać kolejno osoby jak w moim skrypcie i dodawać do wyświetlenia? |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Uzyj AJAX i wczytuj po jednym poziomie struktury. W ajax bedziesz przekazywal ID/email rekokordu dla ktorego chcesz pobrac dzieci
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 108 Pomógł: 0 Dołączył: 30.04.2016 Ostrzeżenie: (0%) ![]() ![]() |
Właśnie wczoraj wyczytałem że przez Ajax mogę łączyć się z baza.
Będę szukał jakiegoś wzoru i próbował przerabiać. Może ma ktoś coś sprawdzonego w formie drzewa? |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
Pierwsze co bym zmienił to te bazę danych zmienił, wtedy nie potrzebujesz wgl pętli a odpowiedni warunek przy pobieraniu rekordów.
czyli masz te tabele z ID Imię Nazwisko Email hasło i drugą ID id_user id_osobap Ten post edytował com 13.01.2017, 01:19:20 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 108 Pomógł: 0 Dołączył: 30.04.2016 Ostrzeżenie: (0%) ![]() ![]() |
Co da rozbicie na dwie tabele? Wyjaśnij jak masz chwile.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 602 Pomógł: 30 Dołączył: 1.08.2007 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
Rozbicie na dwie tabele, da to, że w jednej będziesz trzymał fizyczne osoby a w drugiej strukturę Twojego drzewka
![]() Jeśli masz do kilku tysięcy rekordów to mozesz pobierać całość danych, generować strukturę drzewiastą i zapisywać do cache I tak np dla takiej struktury:
generujesz sobie taką tablicę:
Jeszcze ładniej byś to zrobił sobie obiektami, że każdy element jest obiektem, które posiada strukturę z dziecmi, i jest np traversable. Strukturę generujesz rekurencyjnie, przykładowa funkcja:
Ten post edytował daniel1302 13.01.2017, 08:50:19 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 108 Pomógł: 0 Dołączył: 30.04.2016 Ostrzeżenie: (0%) ![]() ![]() |
daniel1302, dzięki za podpowiedzi ale nie rozumiem trochę kodu od Ciebie. Mógł byś mi odrobinę wyjaśnić jak to będzie działać? Rozumiem że tworze sobie tablice i jeśli rodzic ma potomka to tworzę "podtablicę" itd. Chętnie to wykorzystam tylko nie bardzo potrafię. Bo jeśli się nie mylę to takie gotowe pobrane drzewo w tablicy mogę później wykorzystać w js? A gotowych wyświetleń w js jest masę które pobierają dane z (chyba)takiego drzewa.
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 401 Pomógł: 1 Dołączył: 10.03.2004 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Np możesz zrobić tak: http://phpflow.com/php/dynamic-tree-with-j...-php-and-mysql/
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 03:42 |