Problemas com gravação no banco de dados MYSQL Boa Tarde! Estou com o seguinte problema criei uma tabela e posteriormente acrescentei duas colunas, Membro e Recebe, alterei a classe, contudo, as informações não são inclusas na tabela. Outra coisa os dois TCheckGroup não aparecem marcados utilizando o setValue('s') Será que alguém pode me socorrer? Clase ...
PC
Problemas com gravação no banco de dados MYSQL  
Boa Tarde!
Estou com o seguinte problema criei uma tabela e posteriormente acrescentei duas colunas, Membro e Recebe, alterei a classe, contudo, as informações não são inclusas na tabela.
Outra coisa os dois TCheckGroup não aparecem marcados utilizando o setValue('s')
Será que alguém pode me socorrer?

Clase </>

 
  1. <?php
  2. class Membro extends TRecord
  3. {
  4. const TABLENAME = 'membro';
  5. const PRIMARYKEY = 'MembroId';
  6. const IDPOLICY = 'max';
  7. private $cargo;
  8. private $capelania;
  9. public function __construct($MembroId = NULL)
  10. {
  11. parent::__construct($MembroId);
  12. parent::addAttribute('Nome');
  13. parent::addAttribute('Endereco');
  14. parent::addAttribute('Telefone');
  15. parent::addAttribute('CargoId');
  16. parent::addAttribute('CapelaniaId');
  17. <b> parent::addAttribute('Membro'); </b>
  18. <b> parent::addAttribute('Recebe');</b.>
  19. }
  20. public function set_cargo( Cargo $object)
  21. {
  22. $this->cargo = $object;
  23. $this->cargoId = $object->CargoId;
  24. }
  25. public function get_cargo()
  26. {
  27. if (empty( $this->cargo) )
  28. {
  29. $this->cargo = new Cargo( $this->CargoId );
  30. }
  31. return $this->cargo;
  32. }
  33. public function get_capelania()
  34. {
  35. if (empty( $this->capelania) )
  36. {
  37. $this->capelania = new Capelania( $this->CapelaniaId );
  38. }
  39. return $this->capelania;
  40. }
  41. }
  42. <b> Formulário que realiza o cadastro</>
 
  1. <?php
  2. class MembroForm extends TPage
  3. {
  4. private $form;
  5. public function __construct($param)
  6. {
  7. parent::__construct();
  8. //$this->form = new BootstrapFormBuilder(new TQuickForm);
  9. $this->form = new BootstrapFormBuilder;
  10. //$this->form->setFormTitle('Cadastro de Membros');
  11. $this->form->class = 'tform';
  12. $this->form->style = 'width: 800px';
  13. $MembroId = new TEntry('MembroId');
  14. $Nome = new TEntry('Nome');
  15. $Endereco = new TEntry('Endereco');
  16. $Telefone = new TEntry('Telefone');
  17. $CargoId = new TDBCombo('CargoId', 'imepc', 'Cargo', 'CargoId', 'Descricao');
  18. $CapelaniaId = new TDBCombo('CapelaniaId', 'imepc', 'Capelania', 'CapelaniaId', 'Descricao');
  19. $Membro = new TCheckGroup('Membro');
  20. $Recebe = new TCheckGroup('Recebe');
  21. $MembroId->setEditable(FALSE);
  22. $Nome->placeholder = 'Nome Completo';
  23. $Nome->addValidation('Nome', new TRequiredValidator);
  24. $Nome->setSize('100%');
  25. $Endereco->placeholder = 'Endereço Completo';
  26. $Endereco->addValidation('Endereço', new TRequiredValidator);
  27. $Endereco->setSize('100%');
  28. $Telefone->placeholder = '(99) 99999-9999';
  29. $Telefone->setMask('(99)99999-99999');
  30. //$CargoId->SetValue(1);
  31. $CargoId->enableSearch();
  32. //$CapelaniaId->SetValue(1);
  33. $CapelaniaId->enableSearch();
  34. $itens = array();
  35. $itens['s'] = 'Sim';
  36. $itens['n'] = 'Não';
  37. $Membro->setUseButton();
  38. $Membro->addItems( $itens );
  39. $Membro->setLayout('horizontal');
  40. $Membro->setValue('s');
  41. $Recebe->setUseButton();
  42. $Recebe->addItems($itens);
  43. $Recebe->setLayout('horizontal');
  44. $Recebe->setValue('n');
  45. $Recebe->addValidation('Receba', new TRequiredValidator);
  46. $labelCapelania = new TLabel('Tipo de Capelania');
  47. $labelCapelania->setSize('100');
  48. $labelCargo = new TLabel('Cargo');
  49. $this->form->addFields( [ $labelCargo ], [ $MembroId ] ) ;
  50. $this->form->addFields( [new TLabel('Nome') ] , [ $Nome ] );
  51. $this->form->addFields( [new TLabel('Endereço') ] , [ $Endereco ] );
  52. $this->form->addFields( [new TLabel('Telefone') ] , [ $Telefone ] );
  53. $this->form->addFields( [new TLabel('Cargo') ] , [ $CargoId ] , [ $labelCapelania ] , [ $CapelaniaId ] );
  54. $label1 = new TLabel('Observações', '#7D78B6', 12, 'bi');
  55. $label1->style='text-align:left;border-bottom:1px solid #c0c0c0;width:100%';
  56. $this->form->addContent( [$label1] );
  57. $this->form->addFields( [new TLabel('Membro Ativo?') ] , [ $Membro ] , [new TLabel('Cesta Básica?') ] , [ $Recebe ] );
  58. $salvar = new TAction( array($this, 'onSave') );
  59. $novo = new TAction( array($this, 'onClear') );
  60. $this->form->addAction('Salvar', $salvar, 'fa:save green');
  61. $this->form->addAction('Novo', $novo, 'fa:plus-circle green');
  62. $panel = new TPanelGroup('Cadastro de Membros');
  63. $panel->add($this->form);
  64. $vbox = new TVBox;
  65. $vbox->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
  66. $vbox->add($panel);
  67. parent::add($vbox);
  68. }
  69. public function onClear($param)
  70. {
  71. $this->form->clear( true );
  72. }
  73. public function onEdit($param)
  74. {
  75. try
  76. {
  77. if (isset($param['key']) )
  78. {
  79. $key = $param['key'];
  80. TTransaction::open('imepc');
  81. TTransaction::setLogger(new TLoggerSTD);
  82. $membro = new Membro($key);
  83. $this->form->setData( $membro );
  84. TTransaction::close();
  85. }
  86. }
  87. catch(Exception $e)
  88. {
  89. new TMessage('error', $e->getMessage() );
  90. }
  91. }
  92. public function onSave($param)
  93. {
  94. try
  95. {
  96. TTransaction::open('imepc');
  97. //$data = $this->form->getData('Membro');
  98. //$data = $this->form->getData();
  99. $data = $this->form->getData();
  100. $membro = new Membro;
  101. $membro->fromArray( (array) $data );
  102. $membro->store();
  103. $this->form->validate();
  104. $membro->store();
  105. $data->MembroId = $membro->MembroId;
  106. $this->form->setData( $data );
  107. new TMessage('info', 'Registro Salvo com Sucesso!!!');
  108. //new TMessage('info', json_encode( $data ) );
  109. TTransaction::close();
  110. }
  111. catch (Exception $e)
  112. {
  113. new TMessage('error', $e->getMessage() );
  114. TTransaction::rollback();
  115. }
  116. }
  117. }

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (9)


PC

Complementando!
O insert está sendo enviado sem as duas colunas criadas.

Debug: 2017-09-26 17:38:51 - INSERT INTO membro (MembroId, Nome, Endereco, Telefone, CargoId, CapelaniaId) values (20, 'Teste 5', 'Levantar teste 5', NULL, '2', '2')
AE

Olá este é proposital?

parent::addAttribute('Membro');

retire-os e tente novamente......nos retorne
AE

o b de bold.....
PC

O b coloquei porque achei que fosse destacar as linhas.
NR

Como o checkgroup permite selecionar mais de uma opção, o getData sempre retorna um array para campos desse tipo. Você precisa tratar essa informação na funçãon onSave.
PC

Nataniel bom dia!

Quando eu instancio um novo objeto e faço o store para fazê-lo eu utilo o fromArray e transformo o retorno do form em array.
É esse tratamento que você se refere?

att.
PC

André bom dia!

Eu removi e inclui novamente e os novos atributos não são reconhecidos, acho que deve ser algum bug do adianti.

att.
NR

Paulo, não é bug do Adianti. A questão é que você está passando um array para um atributo e no momento do store esse valor é desconsiderado por não ser um valor válido.

Se a ideia é permitir que o usuário selecione somente 1 opção, não deveria usar um radio no lugar do check? Com o check ele vai conseguir selecionar 'Sim' e 'Não' ao mesmo tempo. Trocando para radio já deve resolver o problema.
PC

Senhores agradeço a ajuda!

Resolvi o problema entendi o erro que estava cometendo utilizei o TRadioGroup, problema resolvido.