Jak vytvořit vícerozměrné pole z db pro selectBox aby zobrazil optgroup?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
marcelxy
Člen | 70
+
0
-

Zdravím všechny,
jsem začatečnik takže navím jak na to??
potřebuju vytvořit vicerozměrné pole pro selectBox z databáze tak,že jeden sloupeček v db. reprezentuje kategorie a druhý položky té kategorie přes fetchPairs() to nejde ta vytvoří pouze jednorozměrné pole!bez možnosti optgroup,má pouze dva argumenty fetchPairs($key,$value).
Určitě to tu někdo řešil ale nemúžu to ovšem nikde najít, neví někdo kde to téma někdo řešil?
A nebo jak vytvořit asociativní array ze dvou sloupců z db.který pak múžu použít v selectboxu který mi z toho udělá „optgroup ->položky“ „optgroup ->položky“???
Diky všem za radu.

Editoval marcelxy (27. 7. 2013 10:31)

frosty22
Člen | 373
+
0
-

Čauky,

trošku vtipné ta první otázka „jsem začatečnik takže navím jak na to??“ :) Odpověď asi „Ne“ :)

Jinak k věci, tak fetchPairs je na získání páru, čili asociativního pole klíč ⇒ hodnota. To co chceš ty, tak na to funkci nenajdeš, resp. můžeš si ji udělat. Ale prostě a jednoduše to budeš muset projít cyklem a sestavit.

https://forum.nette.org/…-db-optgroup

2k
Člen | 15
+
0
-

Na to by šlo použít dibi a fetchAssoc ;-) (víc tady: phpfashion)

Šaman
Člen | 2666
+
0
-

Na tohle zapomeň na různé interní mechanismy NDb a Dibi a prostě použij $connection->query("SELECT ...");

frosty22
Člen | 373
+
0
-

Myslím že tímhle jsi zrovna moc nepomohl, když tu nejpodstatnější část vztahující se k dotazu, jsi vynechal, předpokládám že jsi měl namysli vrácení výsledků pomocí fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP), proto tedy radíš použít přímo PDO.

Šaman
Člen | 2666
+
0
-

Aha, sorry, špatně jsem přečet/pochopil otázku. Já myslel, že to zkouší přes nějaké ->rel a ->related.

Takže nejjednodušší bude jak radíš prohnat to foreachem a pole pro select si sestavit ručně.

marcelxy
Člen | 70
+
0
-

Jjjo, diky všem už sem to splácal,nevědělsem jak vytvořit asoc.pole ze dvou sloupcu z tabulky ale odkaz mi pomohl,jak říkám sem začatečník. Ještě jednou dík za rady