Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Wyliczenie poziomu danej
Forum PHP.pl > Forum > Przedszkole
Randallmaster
Witam,

Mam problem z wyliczeniem na którym poziomie znajduje się zmienna.

Przykład tabeli:

id | parent
|
1 | 0
2 | 1
3 | 2
4 | 3

0 - > główne
id[4] -> znajduje się na 3 poziomie ma nad sobą 3 2 1

jak taki przykład wyliczyć za pomocą php lub sql ?
nospor
Jestes w stanie jeszcze poprawic te strukture? Jak tak, to zainteresuj sie strukturami drzewiastymi, np. drzewka IP.

Jak nie, to niestety musisz w rekurencji leciec zapytaniami po kolei co jest nieoptymalne niesamowicie.
Pyton_000
Albo zassać wszystko, wpakować do statica, globala czy innego Singletona i latać w skrypcie pętlami
nospor
Cytat
i latać w skrypcie pętlami
Predzej też rekurencją.
Zas zassanie wszystkiego przy duzej liczbie danych będzie jeszcze "lepsze " niz rozwiązanie co zaproponowalem. Juz widzialem pare razy takie kwiatki a potem strona sie ladowała 2 godziny....
Pyton_000
Nie sądzę żeby kolega miał 100xxx mln rekordów wink.gif A nawet jak i pobierze tylko id i parent_id to da radę. Tylko to trzeba sobie gdzieś trzymać, ew. cache czy cóś smile.gif
nospor
Nie trzeba milionow, wystarczy kilkadziesiat tysiecy. Ostatnio przez taką właśnie tabele stronka u pewnej osoby muliła aż miło.
Pyton_000
Znam te objawy. Ale to jest cena za nieumiejętne dobieranie rozwiązania do problemu wink.gif
Randallmaster
Właśnie pewną tabelę chcę przerobić na drzewko ip.
Zrobiłem może się komuś przyda:

  1. function nazwa_funkcji($parent, $return){
  2. $id = $this->GetData("nazwa_tabeli", $parent ,"id"); //pobranie danych - własna funkcja
  3. $return .= $id['id'].',';
  4. if($id['parent'] >= 0){
  5. $return = $this->nazwa_funkcji($id['parent'], $return);
  6. }
  7. return $return;
  8. }


przerobione na forum smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.