Checkboxlist – update hodnot – syntax error
- stickybit
- Člen | 14
Ahoj,
zatím jsem v nette nepoužil checkboxlist a teď se o to snažím.
Nadefinuji si checkboxlist ve formuláři
$form->addCheckboxList('material', 'Material', $material)
->setDefaultValue($selectArr);
a pak chci provádět update v databázi
$material = $this->database->table('objednavky')->get($id);
$material->update($values);
Z formuláře se tedy posílá pole
post private => array (3)
material => array (2)
0 => "1"
1 => "2"
A update pak vyhodí syntax error, kdy pro SET hodnot na 1, 2 chybí uvozovky (apostrofy). Je to bug nebo bych ten update měl dělat nějak jinak v tomto případě? Klidně to mohu provádět přes vazební tabulku, kdy pro každý materiál bude zvlášť záznam v db, pokud je to vhodnější a někdo by mě nasměroval. Díky
UPDATE `objednavky`
SET `material`=1, 2
WHERE (`id` = 2)
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in
your SQL syntax; check the manual that corresponds to your MariaDB server
version for the right syntax to use near ‚2 WHERE (id
= 2)‘ at
line 1
- Mistrfilda
- Člen | 76
Ahoj,
budes muset pouzit propojovaci tabulku mezi objednavkami a materialy (objednavka muze mit vice materialu).
Do zpracovani formulare ti dorazi pole hodnot z checkboxlistu, proto nelze pouzit naprimo hodnotu z values jako ses o to snazil doted. Nejprve si ziskas id objednavky (vytvoris pokud neni jiz vytvorena) a pote napr. pres foreach projedes pole z checkboxlistu a ulozis zaznamy do db.
<?php
foreach ($values['material'] as $material) {
$this->database->table('obj_materialy')->insert([
'obj_id' => $objednavkaId,
'material_id' => $material
]);
}
?>