MB
Valor da TDBCombo não grava no banco de dados
Boa noite!
Estou trabalhando com várias TDBCombo, consigo fazer listar os valores vindo de várias outras tabelas, até aqui tudo normal. Porém a informação não é gravada na tabela do banco de dados está ficando em branco os valores preenchidos com os dados dessas TDBCombo. Já pesquisei no fórum, mas não visualizei algo que pudesse me dar uma direção para resolver esse problemas. Por isso peço ajuda de vocês.
Criei também um form so para exibir a listagem dos dados inseridos nesse form de contato.
Segue código:
Estou trabalhando com várias TDBCombo, consigo fazer listar os valores vindo de várias outras tabelas, até aqui tudo normal. Porém a informação não é gravada na tabela do banco de dados está ficando em branco os valores preenchidos com os dados dessas TDBCombo. Já pesquisei no fórum, mas não visualizei algo que pudesse me dar uma direção para resolver esse problemas. Por isso peço ajuda de vocês.
Criei também um form so para exibir a listagem dos dados inseridos nesse form de contato.
Segue código:
- <?php
- class ContatoForm extends TPage
- {
- private $form;
-
- public function __construct()
- {
- parent::__construct();
-
- $this->form = new TQuickForm('form_contato');
- $this->form->setFormTitle('Contato');
- $this->form->class = 'tform';
- $this->form->style = 'width: 650px';
-
- $id_contato = new TEntry('id_contato');
- $celular = new TEntry('celular');
- $nome = new TEntry('nome');
- $datanascimento = new TDate('datanascimento');
- $comprou = new TDBCombo('comprou', 'dbmodaviva', 'Comprou', 'id_comprou', 'descricao');
- $naocomprou = new TEntry('naocomprou');
- $interesse = new TDBCombo('objeto', 'dbmodaviva', 'Objeto', 'id_objeto', 'objeto');
- $opcoes = new TDBCombo('objetotipo', 'dbmodaviva', 'Objetotipo', 'id_objetotipo', 'tipo');
- $genero = new TCombo('genero');
-
- $id_contato->setEditable(FALSE);
- $id_contato->setMask('0000');
- $celular->setMask('(99)99999-9999');
- $comprou->addItems( array(1=>'SIM', 2=>'NÃO'));
- $genero->addItems( array(1=>'M', 2=>'F'));
-
- $this->form->addQuickField('Identificador', $id_contato, 40);
- $this->form->addQuickField('Celular', $celular, 125);
- $this->form->addQuickField('Nome', $nome, 400);
- $this->form->addQuickField('Data de Nascimento', $datanascimento, 90);
- $this->form->addQuickField('Comprou', $comprou, 60);
- $this->form->addQuickField('Não Comprou', $naocomprou, 400);
- $this->form->addQuickField('Interesse', $interesse, 130);
- $this->form->addQuickField('Opções', $opcoes, 130);
- $this->form->addQuickField('Gênero', $genero, 50);
-
- //adicionando ação salvar dentro do form
- $save = new TAction (array($this, 'onSave') );
- $this->form->addQuickAction('Salvar', $save, 'ico_save.png');
-
- //adicionando ação listar dentro do form
- $list = new TAction( array('ContatoList', 'onReload') );
- $this->form->addQuickAction('Listar', $list, 'ico_datagrid.png');
-
- parent::add($this->form);
-
-
- }
-
- public function onSave()
- {
- try
- {
- TTransaction::open('dbmodaviva');
-
- $object = $this->form->getData('Contato');
-
- $object->store();
-
- $this->form->setData( $object );
-
- new TMessage('info', 'Registro salvo com sucesso');
-
-
- TTransaction::close();
- }
- catch (Exception $e)
- {
- new TMessage('error', $e->getMessage());
- TTransaction::rollback();
- }
- }
-
- public function onEdit( $param )
- {
- try
- {
- TTransaction::open('dbmodaviva');
-
- $key = $param [ 'key' ];
-
- $object = new Contato( $key );
-
- $this->form->setData ($object);
-
- TTransaction::close();
- }
- catch (Exception $e)
- {
- new TMessage('error', $e->getMessage());
- }
-
- }
-
-
-
- }
- ?>
Oi Marcelo.
O nome do objeto num form sempre tem que coincidir com o nome do campo do seu Banco de Dados.
Se vc tem um campo com o nome "interesse" em se banco de dados, então deverá fazer o seguinte:
Note que o primeiro parâmetro ($name) do TDBCombo mudei para "interesse" deduzindo que o seu banco tenha esse campo
Ola Ivan! Deu certo aqui. Não me atentei pra sintaxe correta. Obrigado!
Como faço para que no formlist ao inves de aparecer o "id_objeto", seja exibido o "objeto". ?
Se puder me passar mais essa dica dica fico agradecido.
Oi Marcelo, nesse caso vc deve dar uma olha nisso: www.adianti.com.br/framework_files/tutor/index.php?class=Association
e também aqui: www.adianti.com.br/framework_files/tutor/index.php?class=CustomerDat, vc vai trabalhar com associações de objectos no seu model. Veja que no segundo exemplo ele mostra o nome da cidade em vez de mostrar o id.