Multiselect naplnění z DB + optgroup
- merlinof
- Člen | 5
Zdravím právě se snažím převést jeden projekt do Nette frameworku a nejspíš jsem špatně hledal či jsem to překoukl, ale nikde jsem nenašel nějaké poštouchnutí jak na formulářová pole vyplněná z DB… Potřebuji to zejména pro multiselect kde načítám do multiselectu kategorie a podkategorie pro přidání nového položky do db a to tak že kategorie je tzv optgroup, která obsahuje podkategorie… Mohl by mě někdo nějakým směrem poštouchnout, abych si mohl v klidu vychutnat kávu z Nette automatu, místo trhání vlasů
edit: typo
Editoval merlinof (24. 2. 2011 20:00)
- h4kuna
- Backer | 740
stačí vytvořit víceúrovňové pole
<?php
$countries = array('eu'=>array('cz','ge'), 'usa'=>array('NY', 'LA'));
$form->addSelect('country', 'Country:', $countries);
?>
PS: je to z hlavy kdyby to nešlo písni.
EDIT gmvasek byl jsi rychlejší :D
Editoval matata (24. 2. 2011 20:32)
- blacksun
- Člen | 177
Při struktuře záznamů svetadil, zkratka, stat třeba takto (z hlavy):
<?php
$staty = dibi::query('SELECT [svetadil], [zkratka], [stat] FROM [staty]')->fetchAll();
$countries = array();
$svetadil = NULL;
foreach ($staty as $zkr=>$stat) {
if ($stat['svetadil'] != $svetadil) $svetadil = $stat['svetadil'];
$countries[$svetadil][$zkr] = $stat['stat'];
}
$form->addSelect('states', 'Staty:', $countries);
?>
- merlinof
- Člen | 5
toho foreach jsem se bál aby to nevytěžovalo server, jde o to že mám dvě tabulky kategorie(id,nazev) a podkategorie (id,id_kategorie,nazev) takže musím pro každe id z kategorie projít podkategorie tak abych mohl vložit do multiselectu tuto strukturu
evropa (to bude optgroup)
ČR
Slovensko
…
Asie
Rusko
Čína
…
S tím že value hodnota pro zemi (podkategorii) bude ve formatu idkategoriexidpodkategorie (např 1×1 pro čr) tak abych mohl dejme tomu město přiřadit jak do kategorie tak podkategorie… možná na to jdu od lesa, ale víc mi to ted nemyslí a nenapadá mě lehčí řešení aby to nevytěžovalo extrémně server
- merlinof
- Člen | 5
Možná mylně, ale domníval jsem se že bych použil dvě funkce jedna na výběr kategorií a druhá na výběr podkategorií se vstupním argumentem idkategorie…
momentálně to mám řešený tak že jedním dotazem v php načtu do jednoho pole všechyn kategorie a přes smyčku while volám právě druhý sql dotaz nad tabulkou podkategorie se vstupním parametrem idkategorie a tímto cyklem vyplním onen Multiselect … toto se mi zdá dost prasácké byt je jenom necelých 200 kategorií.. asi bych si měl pořádně prostudovat mysql referenční příručku zda by to nešlo nějakým JOINem spojit a to jenom jako pole v poli přiřadit dle již výše uvedeného příkladu :(
edit:
tak jsem zde v diskuzi našel úplně stejný problém
https://forum.nette.org/…ek-v-sablone
Editoval merlinof (24. 2. 2011 23:49)