dynamický selectbox načtený z databáze

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

Dobrý den,
Chtěl bych se zeptat zda-li je možné nějak „jednoduše“ vytvořit formulář s 2 selectboxy, kde bude jeden selectbox a druhý třída
mám v databázi vytvořené 2 tabulky, které vypadají takto:

a potřeboval bych, aby tyto obsahy byly dynamicky načtené do 2 selectboxu..
zatím to mám tak, že to mám u toho formuláře vypsané.
zatím to mám udělané takhle:

$class = array(
            '1' => '1.G',
            '2' => '2.G',
            '3' => '1.Kč',
            '4' => '2.Kč',
            '5' => '3.Kč',
            '6' => '1.H',
            '7' => '2.H',
            '8' => '3.H',
            '9' => '4.H',
            '10' => '1.CR',
            '11' => '2.CR',
            '12' => '3.CR',
            '13' => '4.CR',
        );
        $subjects = array(
            '1' => 'Český Jazyk',

        );
        $form = new Form();
        $form->addText('title', 'Název příspěvku')
                ->setRequired();
        $form->addSelect('class', 'Třída:', $class)
                ->setPrompt('Zvolte třídu');
        $form->addSelect('subject', 'Předmět:', $subjects)
                ->setPrompt('Zvolte Předmět');
        $form->addTextArea('body', 'Detail příspěvku');
        $form->addSubmit('submit', 'Odeslat');
        $form->onSuccess[] = array($this, 'JottingFormSubmited');
        return $form;

ale tak to moc nechci..
pracuji na projektu, který bude sloužit školám (něco jako moodle, ale méně náročný na servery – má něco okolo 200 tabulek..) tento systém má zatím jenom 7 tabulek bez blogu.
Děkuji za pomoc :)

CZechBoY
Člen | 3608
+
0
-

No a co ti neni jasny? Jak dostat model do komponenty? Podivej se do dokumentace https://doc.nette.org/…dependencies

Altimit
Člen | 82
+
0
-

to tak trochu chápu, ale jde mi o to jak mám tedy udělat to, že do selectboxu se mu zobrazí například
Třída: „1.G“ a u předmětu „Český Jazyk“, že vlastně chci z db vytáhnout z té tabulky jenom určité sloupce to právě nevím jak udělat..

CZechBoY
Člen | 3608
+
0
-

Jakože jak udělat závislé selectboxy? Zvolím jednu položku a podle toho es načte obsah druhého selectboxu?
https://github.com/…entSelectBox

Altimit
Člen | 82
+
0
-

ne ne..
Jsem to asi blbě vysvětlil, už jsem to našel, ale to řešení se mi nelíbí

Já jsem potřeboval z té jedné tabulky třeba ze sloupce „rocnik“ a z „zkratka“ a aby mi to do selectboxu udělalo to, že mi to vypíše všechny ty třídy jako „1.G, 2.G, 1.Kč“ a pod tím by bylo ID toho řádku..
zatím jsem našel jenom toto.. a moc se mi to nelíbí, protože jsem musel změnit sloupeček zkratka a dopsat tak ten ročník ručně..

$class = $this->database->table('class')->fetchPairs('id','zkratka');


$form->addSelect('class_id', 'Třída:', $class)
                ->setPrompt('Zvolte třídu');
CZechBoY
Člen | 3608
+
+1
-

Asi hledáš funkci CONCAT

$classesSelection = $this->database->table('class')->select('id, CONCAT(rocnik,zkratka) rocnik_zkratka');
$classes = $classesSelection->fetchPairs('id', 'rocnik_zkratka');

edit: vyhodil jsem concat přes mezeru

Editoval CZechBoY (9. 3. 2016 22:25)

japijana
Člen | 11
+
0
-

@Altimit mimochodom sql obsahuje mnoho uzitocnych funkcii, viac v dokumentací