Hromadné přihlášení osob na akci
- Username
- Člen | 36
Zdravím na fóru,
snažím se vytvořit formulář, který má sloužit k nahlášení účasti
konkrétních osob na konkrétní akci. Funkční řešení mám takové, že
mám ve formuláři rozbalovací seznam s jednotlivými akcemi, které se plní
z databáze a druhý rozbalovací seznam se jmény osob, který se také plní
z databáze. Moc se mi tento způsob nelíbí, protože takto musím na
konkrétní akci přidávat osoby jednu po druhé, rád bych to prováděl
nějak hromadně. Zkoušel jsem pro výběr osob použít checkboxlist, ale
nedařilo se mi formulář uložit do databáze. Je pro tuto situaci vhodné
použít checkboxlist, nebo multiselect? Tabulka v databázi, do které
formulář ukládám má tři sloupce (id, akce, osoba). Díky za
nasměrování.
Editoval Username (31. 12. 2016 6:33)
- Username
- Člen | 36
Akcí je asi 10 do roka a osob kolem 30/akce. Když použiju checkboxlist nebo multiselect mám problém s uložením formuláře do databáze. Data z formuláře se chtějí uložit do jednoho řádku takto VALUES (akce1, osoba1, osoba2, osoba3, …), ale já bych potřeboval je uložit do tří řádku VALUES (akce1, osoba1), (akce1, osoba2), (akce1, osoba3), …). Nevím si s tím moc rady. Díky za pomoc.
Zkusil jsem hodnoty z checkboxlistu zpracovat přes funkci serialize(), ale mám obavu, abych si do budoucna nepřidělal zbytečné problémy.
Editoval Username (31. 12. 2016 9:11)
- Username
- Člen | 36
protected function createComponentPrihlaskaForm()
{
$form = new Form;
$form->addSelect('akce', 'Akce:', $seznam_akci)
->setRequired();
$form->addCheckboxList('osoba', 'Osoba:', $seznam_osob)
->setRequired();
$form->addSubmit('send', 'Odeslat');
$form->onSuccess[] = [$this, 'prihlaskaFormSucceeded'];
return $form;
}
public function prihlaskaFormSucceeded($form, $values)
{
$post = $this->database->table('prihlaska')->insert($values);
}
$this->redirect('default');
}
- Mysteria
- Člen | 797
Tak takhle jednoduše to asi nepůjde, nevím v jakém formátu vrací data CheckBoxList, ale jestli je to jako MultiSelectu ve formě pole vybraných údajů, tak bych zkusil něco jako:
foreach ($values->osoba as $osoba) {
$this->database->table('prihlaska')->insert(['akce' => $values->akce, 'osoba' => $osoba]);
}
- Username
- Člen | 36
Funguje, mockrát díky za pomoc!
Mysteria napsal(a):
Tak takhle jednoduše to asi nepůjde, nevím v jakém formátu vrací data CheckBoxList, ale jestli je to jako MultiSelectu ve formě pole vybraných údajů, tak bych zkusil něco jako:
foreach ($values->osoba as $osoba) { $this->database->table('prihlaska')->insert(['akce' => $values->akce, 'osoba' => $osoba]); }