Pole rekurzí do selectboxu
- Jack06
- Člen | 168
Dobrý den, chtěl bych poradit, jak udělat pomocí nette a dibi nejlépe
pole do selectboxu.
SQL tabulka není řešena nejlépe, jde o rekurze.
tabulka má sloupce ID | NAZEV | PARENT
Portřebuji to do selectboxu využít tak, aby to, co má parent NULL bylo jako optgroup a to, co má rodiče mělo jako value svoje ID.
<optgroup>Kategorie</optgroup>
<option value=‚moje_id‘>muj_nazev</option>
…
Vím, že se to dá řešit rekurzí, ale přijde mi hloupé co jeden rodič to další sql dotaz na potomky. Děkuji
- Ot@s
- Backer | 476
Jack06 napsal(a):
Vím, že se to dá řešit rekurzí, ale přijde mi hloupé co jeden rodič to další sql dotaz na potomky. Děkuji
Obecně máš 3 možnosti:
- rekurzivní fce v PHP nebo relační DB s podporou dotazů do stromů
- fce./metodou v PHP, která zavolá 1 SQL dotaz a „složí“ ho do
pole
strom[parent][id] = db_row
- pomocné informace, které Ti umožní získat strom pomocí 1-ho SQL dotazu – nedávno se to řešilo zde
Výše uvedené metody by se daly „podpořit“ kešováním výsledku. Vše záleží od velikosti stromu a frekvencí práce nad ním. Tím že strom chceš dávat do selectu formu bych to moc neřešil a zvolil nejjednodušší způsob (umístěním řešení do metody modelu můžeš později bez bolesti refaktorovat).
- Jack06
- Člen | 168
Nu jde o to, že jsem se to nějakým způsobem snažil řešit ale nedařilo se mi. Vždy jsem narazil na nějaký problém jako duplicate key, nebo s vložením stringu do pole a podobné. Jednoduše se mi nepodařilo to pole poskládat z jednoho dotazu do array[parent_id][id] = nazev; občas mi to bralo to id jako pozici ve stringu :-D jelikož ti parenti mají také název :-D