Rekurzivní funkce – řešení kategorií a podkategorií

Tento článek je do budoucna spíše připomenutí pro mou maličkost, protože časem určitě někam zašantročím zdrojáky webu, na kterém nyní pracuju v práci. Aktuálně jsem řešil výpis kategorií a jejich podkategorií, které nemají žádné definované mantinely, takže výsledkem je strom, kterým procházet je na první pohled náročné. No naštěstí je to celkem triviální. Následující kód projde celý strom, tedy pokud je volaný s počátečním seznamKategoriiTechniky(0). Práci s DB si upravte dle svých zvyků. Já na tom mám samostatnou třídu, s kterou se pracuje viz. kód. Kód je jen pro ukázku rekurze, takže se v něm neřeší grafika výsledku.

function seznamKategoriiTechniky($kat)
{
 global $seznam;
 if (!isset($kat)) { $kat = 0; }
 if (!is_int($kat)) { $kat = 0; }
 if ($kat == 0) { $seznam = ""; }
 
 $db = new sql();
 $pojistka = 0;
 
 $res = $db->query("select * from kategorie_techniky where smazane=0 and nadrazena_kategorie=$kat order by nazev asc", "");
 while ( $data = $db->res->fetch($res) )
  {
    $seznam .= '<option>'.$data['nazev'].'</option>';
    seznamKategoriiTechniky($data['id']);
    $pojistka++;
    if ($pojistka >= 100) { break; }
  }

 return $seznam;
}

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..