Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Salvar vários CheckGroup no banco Opa. Gostaria de salvar vários TCheckGroup na mesma coluna da tabela, mas por algum motivo não estou conseguindo salvar, no meu banco a coluna diasvalidos está como VARCHAR. Alguém pode da uma força? Agradeço ...
LH
Salvar vários CheckGroup no banco  
Opa. Gostaria de salvar vários TCheckGroup na mesma coluna da tabela, mas por algum motivo não estou conseguindo salvar, no meu banco a coluna diasvalidos está como VARCHAR. Alguém pode da uma força? Agradeço


  1. <?php
  2. ini_set('display_errors',1);
  3. ini_set('display_startup_erros',1);
  4. error_reporting(E_ALL & ~E_WARNING);
  5. class VoucherForm extends TPage
  6. {
  7.     private $form;
  8.     public function __construct()
  9.     {
  10.         parent::__construct();
  11.         //parent::setFormTitle( "Cadastro de Profissionais" );
  12.         //parent::setSize( 0.600, 0.800 );
  13.         $redstar '<font color="red"><b>*</b></font>';
  14.         $this->form = new BootstrapFormBuilder"form_empresa" );
  15.         $this->form->setFormTitle"Cadastro de Novos Vouchers Principais" );
  16.         $this->form->class "tform";
  17.         $id                 = new THidden"id" );
  18.         $empresa_id         = new TDBCombo('empresa_id''database''EmpresaRecord''id''nomefantasia''nomefantasia');
  19.         $datagerada         = new TDate('datagerada');
  20.         $nomeproduto        = new TEntry('nomeproduto');
  21.         $descricao          = new TEntry('descricao');
  22.         $datagerada         ->setMask("dd/mm/yyyy");
  23.         $datagerada         ->setDatabaseMask("yyyy-mm-dd");
  24.         $datagerada         ->setValue(date("d/M/Y"));
  25.         $datagerada         ->setEditable(FALSE);
  26.         $diasvalidos        = new TCheckGroup('diasvalidos');
  27.         $cb = array();
  28.         $cb['1'] = 'Segunda-Feira';
  29.         $cb['2'] = 'Terça-Feira';
  30.         $cb['3'] = 'Quarta-Feira';
  31.         $cb['4'] = 'Quinta-Feira';
  32.         $cb['5'] = 'Sexta-Feira';
  33.         $cb['6'] = 'Sábado';
  34.         $cb['7'] = 'Domingo';
  35.         $diasvalidos->addItems($cb);
  36.         $diasvalidos        ->setLayout('vertical');
  37.         //$diasvalidos        ->addItems($seg_item);
  38.         $datagerada         ->setMask("dd/mm/yyyy h:i:s");
  39.         $datagerada         ->setEditable(false);
  40.         $datagerada         ->setDatabaseMask("yyyy-mm-dd h:i:s");
  41.         $datagerada         ->setValue(date("d/m/Y H:i:s"));
  42.         $empresa_id         ->enableSearch();
  43.         $this->form->addFields( [new TLabel("Empresa: {$redstar}")], [$empresa_id], [new TLabel("")], [$datagerada] );
  44.         $this->form->addFields( [new TLabel("Produto: {$redstar}")], [$nomeproduto] );
  45.         $this->form->addFields( [new TLabel("Descrição: {$redstar}")], [$descricao] );
  46.         $this->form->addFields( [new TLabel("Dias Válidos: {$redstar}")], [$diasvalidos] );
  47.         $this->form->addFields( [ $id ] );
  48. $this->form->addAction'Salvar', new TAction( [ $this"onSave" ] ), 'fa:floppy-o' )->class 'btn btn-sm btn-success';
  49. $this->form->addAction('Voltar', new TAction(array('VoucherList''onReload')), 'fa:arrow-left')->class 'btn btn-sm btn-primary';
  50.         $container = new TVBox();
  51.         $container->style "width: 100%";
  52.         $container->add$this->form );
  53.         parent::add$container );
  54.     }
  55.     public function onSave()
  56.     {
  57.         try {
  58.             $this->form->validate();
  59.             TTransaction::open"database" );
  60.             $voucher $this->form->getData("VoucherRecord");
  61.             foreach ($voucher->diasvalidos as $diasvalidos)
  62.             {
  63.                 //$voucher->add DiasValidos(new Filter($diasvalidos);
  64.             }
  65.             
  66.             $voucher->store();
  67.             TTransaction::close();
  68.             $action = new TAction( [ "VoucherList""onReload" ] );
  69.             new TMessage"info""Registro salvo com sucesso!"$action );
  70.         } catch ( Exception $ex ) {
  71.             TTransaction::rollback();
  72.             new TMessage"error""Ocorreu um erro ao tentar salvar o registro!<br><br><br><br>" $ex->getMessage() );
  73.         }
  74.     }
  75.     public function onEdit$param )
  76.     {
  77.         try {
  78.             if( isset( $param"key" ] ) ) {
  79.                 TTransaction::open"database" );
  80.                 $object = new VoucherRecord($param["key"]);
  81.                 $this->form->setData($object);
  82.                 TTransaction::close();
  83.             }
  84.         } catch ( Exception $ex ) {
  85.             TTransaction::rollback();
  86.             new TMessage"error""Ocorreu um erro ao tentar carregar o registro para edição!<br><br>" $ex->getMessage() );
  87.         }
  88.     }
  89. }

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (3)


MG

Utilize o var_dump($data->diasvalidos) e receberá como resultado um array.

Utilize:
  1. <?php
  2. // transforma array numa string = '1,2,3'
  3. $obj->diasvalidos implode(',',$data->diasvalidos);
  4. // para voltar a um array
  5. $data->diasvalidos explode(',',$obj->diasvalidos);
  6. ?>

LH

Não entendi esse código Marcelo.
MG

No onSave vc captura o conteúdo do formulário certo?
Um dos campos é o "diasvalidos" que um TCheckgroup.
Ele retorna um array, no lugar do seu foreach, vc usa:

$diasvalidos = implode(',',$voucher->diasvalidos);
isso fará com que a sua variável dias válidos fique assim = '1,3,4', ou seja os itens checados.

Agora para transforma a string salva no banco em um array para popular o TcheckGroup, vc deve usar o explode.

São métodos (funções) php para manipular arrays.