Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Rekurencja i zwracanie wartości
tyrael
post 17.03.2010, 15:34:01
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 17.03.2010

Ostrzeżenie: (0%)
-----


Na wstępie witam wszystkich.

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

  1. function kategoria_glowna( $id_kat )
  2. {
  3. $zapytanie = "SELECT * FROM kategorie WHERE id_kat='$id_kat' ";
  4. $wynik = mysql_query( $zapytanie );
  5. $row = mysql_fetch_array( $wynik );
  6.  
  7. // jeśli nie jest to kategoria główna to wejście w rekurencje
  8.  
  9. if ( $row['id_matki'] != 0 )
  10. {
  11. kategoria_glowna( $row['id_matki'] );
  12. }
  13. else
  14. {
  15. return $row['id_kat'];
  16. }
  17. }

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?
  1. function kategoria_glowna( $id_kat )
  2. {
  3. $zapytanie = "SELECT * FROM kategorie WHERE id_kat='$id_kat' ";
  4. $wynik = mysql_query( $zapytanie );
  5. $row = mysql_fetch_array( $wynik );
  6.  
  7. $path = array();
  8. static $path;
  9.  
  10. // jeśli nie jest to kategoria główna to wejście w rekurencje
  11.  
  12. if ( $row['id_matki'] != 0 )
  13. {
  14. kategoria_glowna( $row['id_matki'] );
  15. }
  16.  
  17. $path[] = $row['id_kat'];
  18. return $path[0] ;
  19. }


Ten post edytował tyrael 17.03.2010, 15:41:14
Go to the top of the page
+Quote Post
karolrynio
post 17.03.2010, 15:54:28
Post #2





Grupa: Zarejestrowani
Postów: 144
Pomógł: 25
Dołączył: 2.02.2009

Ostrzeżenie: (0%)
-----


  1.  
  2. if ( $row['id_matki'] != 0 )
  3. {
  4. return kategoria_glowna( $row['id_matki'] );
  5. }
  6.  
Go to the top of the page
+Quote Post
tyrael
post 17.03.2010, 16:06:37
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 17.03.2010

Ostrzeżenie: (0%)
-----


Dzięki.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 18:34