tabela 'kategorie'
id_kat
id_matki
nazwa
1 | 0 | kategoria A
2 | 1 | kategoria B
3 | 2 | kategoria C
kategoria A
--- kategoria B
--- --- kategoria C
Wchodzę do "kategorii C" z id_kat "3" i chcę otrzymać id_kat ( lub nazwę kat ) najwyższego poziomu
function kategoria_glowna( $id_kat ) { $zapytanie = "SELECT * FROM kategorie WHERE id_kat='$id_kat' "; // jeśli nie jest to kategoria główna to wejście w rekurencje if ( $row['id_matki'] != 0 ) { kategoria_glowna( $row['id_matki'] ); } else { return $row['id_kat']; } }
Niestety nie zwraca "id_kat" najwyższego poziomu. Jeśli zastąpimy "return" funkcją "echo" to wtedy pokazuje poprawnie ale return nie zwraca wartości.
Rozwiązanie działające, które znalazłem jest poniżej. Pytanie czy jest jakaś inna metoda?
function kategoria_glowna( $id_kat ) { $zapytanie = "SELECT * FROM kategorie WHERE id_kat='$id_kat' "; // jeśli nie jest to kategoria główna to wejście w rekurencje if ( $row['id_matki'] != 0 ) { kategoria_glowna( $row['id_matki'] ); } $path[] = $row['id_kat']; return $path[0] ; }