Uložení true/false do db pomocí checkboxu

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

Ahoj, do db bych potřeboval z checkboxu ukládat true nebo false. V dokumentaci je napsáno že vždy vrací true/false. Takže jestli to dobře chápu tak když ho nezaškrtnu tak by se mělo do db uložit false (0) ale i když ho nemám zaškrtnutý tak se mě ukládá true (1). Kde by mohl být problém?

ViPEr*CZ*
Člen | 817
+
0
-

No a díval jste se co Vám to vrací? Auto by mělo startovat otočením klíčku… ale když klíček otočím stále stojím na místě… asi takhle se ptáte. Pošlete kód jak to děláte, dumpněte si hodnoty co se Vám vrací při odeslání formuláře. A taky se podívejte do Debug baru jakej SQL dotaz se provádí při insertu do DB a hned budem všichni chytřejší ;-)

.:M@rt!n:.
Člen | 201
+
0
-

Vytvoření formuláře:

$form->addText('ucet', 'Název účtu:')
                ->addRule(Form::FILLED, 'Je nutné zadat název účtu.');


        $form->addCheckbox('novinky', 'Novinky');
        $form->addCheckbox('menu', 'Menu');
        $form->addCheckbox('kategorie', 'Kategorie');
        $form->addCheckbox('jidelniListek', 'Jídelní lístek');
        $form->addCheckbox('napojovyListek', 'Nápojový lístek');
        $form->addCheckbox('akce', 'Akce');
        $form->addCheckbox('uzivatele', 'Uživatele');

Kód pro uložení do db:

dump($this->context->createUcet()->insert(array(
                    'ucet' => $form->values->ucet,
                    'novinky' => $form->values->novinky,
                    'menu' => $form->values->menu,
                    'kategorie' => $form->values->kategorie,
                    'jidelniListek' => $form->values->jidelniListek,
                    'napojovyListek' => $form->values->napojovyListek,
                    'akce' => $form->values->akce,
                    'uzivatele' => $form->values->uzivatele
                )));

Při dump, při zaškrtnutí požadovaných políček, to vypíše:

data private => array(9) {
      ucet => "pokus" (5)
      novinky => TRUE
      menu => TRUE
      kategorie => TRUE
      jidelniListek => FALSE
      napojovyListek => FALSE
      akce => FALSE
      uzivatele => FALSE
      id => "8"
   }

V debug baru SQL pro vložení do db:

INSERT INTO `ucet` (`ucet`, `novinky`, `menu`, `kategorie`, `jidelniListek`, `napojovyListek`,
`akce`, `uzivatele`)
VALUES ('pokus', ?, ?, ?, ?, ?, ?, ?)
ViPEr*CZ*
Člen | 817
+
0
-

Vypadá to dobře… podle dumpu se tam správně posílají TRUE i FALSE. Jak tam jsou ty otazníky, tak v debugbaru to vedle ukazuje hodnoty co se posílají za ty otazníky, ale tam by to mělo být OK si myslím. Sloupce v DB by měli být typu boolean. ;-)

.:M@rt!n:.
Člen | 201
+
0
-

Děkuji za navedení, problém byl v tom, že jsem měl v db typ sloupců bit…

ViPEr*CZ*
Člen | 817
+
0
-

Rádo se stalo. ;-)