Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Rekurencja i zwracanie wartości
tyrael
post
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
 
Start new topic
Odpowiedzi (1 - 2)
karolrynio
post
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
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
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 21:00