AR
Problema com TCheckGroup para inserir dados no BD
Boa tarde a toda comunidade, Pablo e equipe.
Gostaria muito de parabenizar a todos, mas principalmente ao Pablo pela excelente ferramenta. Venho do CodeIgniter, e estou engatinhando ainda neste ferramenta, mas pude perceber que o CodeIgniter esta bem atras do Adianti.
Contudo gostaria muito de uma ajuda de vcs tenho um base de dados que é esta
E criei o seguinte Modelo
e baseado neste modelo criei o seguinte formulário
Esta funcionando em parte efetuando o cadastro no banco que postei acima contudo os campos que constam com TCheckGroup não esta inserindo os valores em seus respectivos campos na tabela.
Está é minha dúvida como fazer para que este campo cadastre ou eu fiz alguma coisa errada que não percebi.
Desde já agradeço a atenção de vcs e aguardo ansioso um feedback
Gostaria muito de parabenizar a todos, mas principalmente ao Pablo pela excelente ferramenta. Venho do CodeIgniter, e estou engatinhando ainda neste ferramenta, mas pude perceber que o CodeIgniter esta bem atras do Adianti.
Contudo gostaria muito de uma ajuda de vcs tenho um base de dados que é esta
CREATE TABLE `prontuario` (
`idProntuario` int(11) NOT NULL,
`municipio` varchar(45) NOT NULL,
`nomePaciente` varchar(45) NOT NULL,
`dtNasc` date NOT NULL,
`dtCadastro` date NOT NULL,
`queixaPrincipal` varchar(255) NOT NULL,
`hda` text NOT NULL,
`hpp` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
`quaisHPP` varchar(255) DEFAULT NULL,
`medicamentosUso` varchar(255) DEFAULT NULL,
`prontuariocol` varchar(45) DEFAULT NULL,
`fatorRisco` varchar(45) DEFAULT NULL,
`quais` varchar(255) DEFAULT NULL,
`exameFisico` text,
`tc` varchar(45) DEFAULT NULL,
`dtTC` date DEFAULT NULL,
`resultadoTC` varchar(255) DEFAULT NULL,
`rm` varchar(45) DEFAULT NULL,
`dtRM` date DEFAULT NULL,
`resultadoRM` varchar(255) DEFAULT NULL,
`eeg` varchar(45) DEFAULT NULL,
`dtEEG` date DEFAULT NULL,
`resultadoEEG` varchar(255) DEFAULT NULL,
`bioquimica` varchar(45) DEFAULT NULL,
`dtBIOQUIMICA` date DEFAULT NULL,
`resultadoBIOQUIMICA` varchar(255) DEFAULT NULL,
`dosagemserica` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
`dtdosagemserica` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
`resultadodosagemserica` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
`HD` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`conduta` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `receituario` (
`idReceituario` int(11) NOT NULL,
`idPaciente` int(11) NOT NULL,
`prescricao` text NOT NULL,
`dtPrescricao` date NOT NULL,
`prontuario_idProntuario` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `retorno` (
`idRetorno` int(11) NOT NULL,
`decRetorno` text,
`idPaciente` int(11) NOT NULL,
`prontuario_idProntuario` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='';
--
-- Índices para tabela `prontuario`
--
ALTER TABLE `prontuario`
ADD PRIMARY KEY (`idProntuario`);
--
-- Índices para tabela `receituario`
--
ALTER TABLE `receituario`
ADD PRIMARY KEY (`idReceituario`,`prontuario_idProntuario`),
ADD KEY `fk_receituario_prontuario1_idx` (`prontuario_idProntuario`);
--
-- Índices para tabela `retorno`
--
ALTER TABLE `retorno`
ADD PRIMARY KEY (`idRetorno`,`prontuario_idProntuario`),
ADD KEY `fk_retorno_prontuario_idx` (`prontuario_idProntuario`);
--
-- AUTO_INCREMENT de tabela `prontuario`
--
ALTER TABLE `prontuario`
MODIFY `idProntuario` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;
--
-- AUTO_INCREMENT de tabela `receituario`
--
ALTER TABLE `receituario`
MODIFY `idReceituario` int(11) NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT de tabela `retorno`
--
ALTER TABLE `retorno`
MODIFY `idRetorno` int(11) NOT NULL AUTO_INCREMENT;
--
-- Restrições para despejos de tabelas
--
--
-- Limitadores para a tabela `receituario`
--
ALTER TABLE `receituario`
ADD CONSTRAINT `fk_receituario_prontuario1` FOREIGN KEY (`prontuario_idProntuario`) REFERENCES `prontuario` (`idProntuario`);
--
-- Limitadores para a tabela `retorno`
--
ALTER TABLE `retorno`
ADD CONSTRAINT `fk_retorno_prontuario` FOREIGN KEY (`prontuario_idProntuario`) REFERENCES `prontuario` (`idProntuario`);
COMMIT;
E criei o seguinte Modelo
- <?php
- /**
- * Prontuario Active Record
- * @author <your-name-here>
- */
- class Prontuario extends TRecord
- {
- const TABLENAME = 'prontuario';
- const PRIMARYKEY= 'idProntuario';
- const IDPOLICY = 'serial'; // {max, serial}
- /**
- * Constructor method
- */
- public function __construct($id = NULL, $callObjectLoad = TRUE)
- {
- parent::__construct($id, $callObjectLoad);
- parent::addAttribute('municipio');
- parent::addAttribute('nomePaciente');
- parent::addAttribute('dtNasc');
- parent::addAttribute('dtCadastro');
- parent::addAttribute('queixaPrincipal');
- parent::addAttribute('hda');
- parent::addAttribute('hpp');
- parent::addAttribute('quaisHPP');
- parent::addAttribute('medicamentosUso');
- parent::addAttribute('prontuariocol');
- parent::addAttribute('fatorRisco');
- parent::addAttribute('quais');
- parent::addAttribute('exameFisico');
- parent::addAttribute('tc');
- parent::addAttribute('dtTC');
- parent::addAttribute('resultadoTC');
- parent::addAttribute('rm');
- parent::addAttribute('dtRM');
- parent::addAttribute('resultadoRM');
- parent::addAttribute('eeg');
- parent::addAttribute('dtEEG');
- parent::addAttribute('resultadoEEG');
- parent::addAttribute('bioquimica');
- parent::addAttribute('dtBIOQUIMICA');
- parent::addAttribute('resultadoBIOQUIMICA');
- parent::addAttribute('dosagemserica');
- parent::addAttribute('dtdosagemserica');
- parent::addAttribute('resultadodosagemserica');
- parent::addAttribute('HD');
- parent::addAttribute('conduta');
- }
- }
- </code>
e baseado neste modelo criei o seguinte formulário
- <?php
- /**
- * ProntuarioForm Form
- * @author <your name here>
- */
- class ProntuarioForm1 extends TPage
- {
- protected $form; // form
- /**
- * Form constructor
- * @param $param Request
- */
- public function __construct( $param )
- {
- parent::__construct();
- // creates the form
- $this->form = new BootstrapFormBuilder('form_Prontuario');
- $this->form->setFormTitle('Prontuario');
- $this->form->setFieldSizes('100%');
- // create the form fields
- $municipio = new TCombo('municipio');
- $nomePaciente = new TEntry('nomePaciente');
- $dtNasc = new TDate('dtNasc');
- $dtCadastro = new TDate('dtCadastro');
- $queixaPrincipal = new TEntry('queixaPrincipal');
- $hda = new TText('hda');
- $hpp = new TCheckGroup('hpp');
- $quaisHPP = new TEntry('quaisHPP');
- $medicamentosUso = new TEntry('medicamentosUso');
- $fatorRisco = new TCheckGroup('fatorRisco');
- $quais = new TEntry('quais');
- $exameFisico = new TText('exameFisico');
- $tc = new TCheckGroup('tc');
- $dtTC = new TDate('dtTC');
- $resultadoTC = new TEntry('resultadoTC');
- $rm = new TCheckGroup('rm');
- $dtRM = new TDate('dtRM');
- $resultadoRM = new TEntry('resultadoRM');
- $eeg = new TCheckGroup('eeg');
- $dtEEG = new TDate('dtEEG');
- $resultadoEEG = new TEntry('resultadoEEG');
- $bioquimica = new TCheckGroup('bioquimica');
- $dtBIOQUIMICA = new TDate('dtBIOQUIMICA');
- $resultadoBIOQUIMICA = new TEntry('resultadoBIOQUIMICA');
- $dosagemserica = new TCheckGroup('dosagemSérica');
- $dtdosagemserica = new TDate('dtDosagemSérica');
- $resultadodosagemserica = new TEntry('resultadoDosagemSérica');
- $HD = new TEntry('HD');
- $conduta = new TText('conduta');
- // Adicionando itens aos Checkbox e aos combos
- $itemsTC = ['TC'=>'TC'];
- $tc->addItems($itemsTC);
- $itemsMuni = ( ['São Lourenço' => 'São Lourenço', 'Cristina' => 'Cristina', 'Itanhandu' => 'Itanhandu'] );
- $municipio->addItems($itemsMuni);
- $hpp->setLayout('horizontal');
- $itemsHPP = ( ['HAS' => 'HAS ', 'DM' => ' DM ', 'OUTRAS' => ' OUTRAS'] );
- $hpp->addItems($itemsHPP);
- $fatorRisco->setLayout('horizontal');
- $itemsfatorRisco = ( ['Tabagista' => 'Tabagista ', 'Etilista' => ' Etilista ', 'Drogas Ilícitas' => ' Drogas Ilícitas'] );
- $fatorRisco->addItems($itemsfatorRisco);
- $itemsRM = ['RM'=>'RM'];
- $rm->addItems($itemsRM);
- $itemsEEG = ['EEG'=>'EEG'];
- $eeg->addItems($itemsEEG);
- $itemsbioquimica = ['BIOQUIMICA'=>'BIOQUÍMICA'];
- $bioquimica->addItems($itemsbioquimica);
- $itemsDS = ['DOSAGEM SERICA'=>'DOSAGEM SÉRICA'];
- $dosagemserica->addItems($itemsDS);
- // Adicionando Mascaras ao form
- $dtNasc->setMask('dd/mm/yyyy');
- $dtNasc->setDatabaseMask('yyyy-mm-dd');
- $dtCadastro->setMask('dd/mm/yyyy');
- $dtCadastro->setDatabaseMask('yyyy-mm-dd');
- $dtTC->setMask('dd/mm/yyyy');
- $dtTC->setDatabaseMask('yyyy-mm-dd');
- $dtRM->setMask('dd/mm/yyyy');
- $dtRM->setDatabaseMask('yyyy-mm-dd');
- $dtEEG->setMask('dd/mm/yyyy');
- $dtEEG->setDatabaseMask('yyyy-mm-dd');
- $dtBIOQUIMICA->setMask('dd/mm/yyyy');
- $dtBIOQUIMICA->setDatabaseMask('yyyy-mm-dd');
- $dtdosagemserica->setMask('dd/mm/yyyy');
- $dtdosagemserica->setDatabaseMask('yyyy-mm-dd');
- // add the fields
- $row = $this->form->addFields( [ new TLabel('Municipio'), $municipio ] ,
- [ new TLabel('Dt Cadastro'), $dtCadastro ] ,
- [ new TLabel('Nome Paciente'), $nomePaciente ] ,
- [ new TLabel('Dt Nasc'), $dtNasc ]);
- $row->layout = ['col-sm-3', 'col-sm-2', 'col-sm-5', 'col-sm-2' ];
- $this->form->addFields( [ new TLabel('Queixa Principal'), $queixaPrincipal ] );
- $this->form->addFields( [ new TLabel('HDA'), $hda ] );
- $row = $this->form->addFields( [ new TLabel('HPP'), $hpp ],
- [ new TLabel('Quais?'), $quaisHPP ] );
- $row->layout = ['col-sm-4', 'col-sm-8'];
- $this->form->addFields( [ new TLabel('Medic/tos Uso'), $medicamentosUso ] );
- $row = $this->form->addFields( [ new TLabel('Fator Risco'), $fatorRisco ] ,
- [ new TLabel('Quais'), $quais ] );
- $row->layout = ['col-sm-4', 'col-sm-8'];
- $this->form->addFields( [ new TLabel('Exame Fisico'), $exameFisico ] );
- $label2 = new TLabel('SOLICITAÇÃO DE EXAMES', '#5A73DB', 12, '');
- $label2->style='text-align:left;border-bottom:1px solid #c0c0c0;width:100%';
- $this->form->addContent( [$label2] );
- $row = $this->form->addFields([ $tc ] ,
- [ new TLabel('Dt TC'), $dtTC ] ,
- [ new TLabel('Resultado TC'), $resultadoTC ] );
- $row->layout = ['col-sm-2', 'col-sm-3', 'col-sm-7'];
- $label2 = new TLabel('RESSONÂNCIA MAGNÉTICA', '#5A73DB', 12, '');
- $label2->style='text-align:left;border-bottom:1px solid #c0c0c0;width:100%';
- $this->form->addContent( [$label2] );
- $row = $this->form->addFields( [ $rm ] ,
- [ new TLabel('Dt RM'), $dtRM ] ,
- [ new TLabel('Resultado RM'), $resultadoRM ] );
- $row->layout = ['col-sm-2', 'col-sm-3', 'col-sm-7'];
- $label2 = new TLabel('ELETROENCEFALOGRAMA - EEG', '#5A73DB', 12, '');
- $label2->style='text-align:left;border-bottom:1px solid #c0c0c0;width:100%';
- $this->form->addContent( [$label2] );
- $row = $this->form->addFields( [ $eeg ] ,
- [ new TLabel('Dt EEG'), $dtEEG ] ,
- [ new TLabel('Resultado EEG'), $resultadoEEG ] );
- $row->layout = ['col-sm-2', 'col-sm-3', 'col-sm-7'];
- $label2 = new TLabel('BIOQUÍMICA', '#5A73DB', 12, '');
- $label2->style='text-align:left;border-bottom:1px solid #c0c0c0;width:100%';
- $this->form->addContent( [$label2] );
- $row = $this->form->addFields( [ $bioquimica ] ,
- [ new TLabel('Dt Bioquimica'), $dtBIOQUIMICA ] ,
- [ new TLabel('Resultado Bioquimica'), $resultadoBIOQUIMICA ] );
- $row->layout = ['col-sm-2', 'col-sm-3', 'col-sm-7'];
- $label2 = new TLabel('DOSAGEM SÉRICA', '#5A73DB', 12, '');
- $label2->style='text-align:left;border-bottom:1px solid #c0c0c0;width:100%';
- $this->form->addContent( [$label2] );
- $row = $this->form->addFields([ $dosagemserica ],
- [ new TLabel('Dt D. Sérica'), $dtdosagemserica ] ,
- [ new TLabel('Resultado D. Sérica'), $resultadodosagemserica ] );
- $row->layout = ['col-sm-2', 'col-sm-3', 'col-sm-7'];
- $this->form->addFields( [ new TLabel('HD'), $HD ] );
- $this->form->addFields( [ new TLabel('Conduta'), $conduta ] );
- // set sizes
- $municipio->setSize('100%');
- $nomePaciente->setSize('100%');
- $dtNasc->setSize('100%');
- $dtCadastro->setSize('100%');
- $queixaPrincipal->setSize('100%');
- $hda->setSize('100%');
- $hpp->setSize('100%');
- $quaisHPP->setSize('100%');
- $medicamentosUso->setSize('100%');
- $fatorRisco->setSize('100%');
- $quais->setSize('100%');
- $exameFisico->setSize('100%');
- $tc->setSize('100%');
- $dtTC->setSize('100%');
- $resultadoTC->setSize('100%');
- $rm->setSize('100%');
- $dtRM->setSize('100%');
- $resultadoRM->setSize('100%');
- $eeg->setSize('100%');
- $dtEEG->setSize('100%');
- $resultadoEEG->setSize('100%');
- $bioquimica->setSize('100%');
- $dtBIOQUIMICA->setSize('100%');
- $resultadoBIOQUIMICA->setSize('100%');
- $dosagemserica->setSize('100%');
- $dtdosagemserica->setSize('100%');
- $resultadodosagemserica->setSize('100%');
- $HD->setSize('100%');
- $conduta->setSize('100%');
- if (!empty($idProntuario))
- {
- $idProntuario->setEditable(FALSE);
- }
- /** samples
- $fieldX->addValidation( 'Field X', new TRequiredValidator ); // add validation
- $fieldX->setSize( '100%' ); // set size
- **/
- // create the form actions
- $btn = $this->form->addAction(_t('Save'), new TAction([$this, 'onSave']), 'fa:save');
- $btn->class = 'btn btn-sm btn-primary';
- $this->form->addActionLink(_t('New'), new TAction([$this, 'onEdit']), 'fa:eraser red');
- // vertical box container
- $container = new TVBox;
- $container->style = 'width: 100%';
- // $container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
- $container->add($this->form);
- parent::add($container);
- }
- /**
- * Save form data
- * @param $param Request
- */
- public function onSave( $param )
- {
- try
- {
- TTransaction::open('prontuario'); // open a transaction
- /**
- // Enable Debug logger for SQL operations inside the transaction
- TTransaction::setLogger(new TLoggerSTD); // standard output
- TTransaction::setLogger(new TLoggerTXT('log.txt')); // file
- **/
- $this->form->validate(); // validate form data
- $data = $this->form->getData(); // get form data as array
- $object = new Prontuario; // create an empty object
- $object->fromArray( (array) $data); // load the object with data
- $object->store(); // save the object
- // get the generated idProntuario
- $data->idProntuario = $object->idProntuario;
- $this->form->setData($data); // fill form data
- TTransaction::close(); // close the transaction
- new TMessage('info', AdiantiCoreTranslator::translate('Record saved'));
- }
- catch (Exception $e) // in case of exception
- {
- new TMessage('error', $e->getMessage()); // shows the exception error message
- $this->form->setData( $this->form->getData() ); // keep form data
- TTransaction::rollback(); // undo all pending operations
- }
- }
- /**
- * Clear form data
- * @param $param Request
- */
- public function onClear( $param )
- {
- $this->form->clear(TRUE);
- }
- /**
- * Load object to form data
- * @param $param Request
- */
- public function onEdit( $param )
- {
- try
- {
- if (isset($param['key']))
- {
- $key = $param['key']; // get the parameter $key
- TTransaction::open('prontuario'); // open a transaction
- $object = new Prontuario($key); // instantiates the Active Record
- $this->form->setData($object); // fill the form
- TTransaction::close(); // close the transaction
- }
- else
- {
- $this->form->clear(TRUE);
- }
- }
- catch (Exception $e) // in case of exception
- {
- new TMessage('error', $e->getMessage()); // shows the exception error message
- TTransaction::rollback(); // undo all pending operations
- }
- }
- }
- </code>
Esta funcionando em parte efetuando o cadastro no banco que postei acima contudo os campos que constam com TCheckGroup não esta inserindo os valores em seus respectivos campos na tabela.
Está é minha dúvida como fazer para que este campo cadastre ou eu fiz alguma coisa errada que não percebi.
Desde já agradeço a atenção de vcs e aguardo ansioso um feedback
Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4
Dominando o Adianti 7 Quero me inscrever agora!
Alex Boas,
Veirifique no seu formulario nas linhas 49/50/51 tem caracter estranhos, ve se isso ocorre no formulario real.
Use a função var_dump( $param ). no onSave para saber o que chega, e tambem no var_dump( $data ).
Assim vc terá uma posição do que esta chegando, nestes campos ou em qualquer outro que vc quizer..
var_dump( ) e o nosso anjo da guarda para depuração.
Marcos muito obrigado pelo feedback ajustei as linha 49/50/51 e adicionei o var_dump() e o resultado foi este
Pessoal como faço para pegar este valor e onde?
Dentre os outros que utilizam o TCheckGroup
Alex boas
Na estrura que retornou o var_dump($data), vc verá que cada string entre colchetes terá que ser igual
aos campos criados no $object ou seja:
$object->municipio = $data->municipio;
Caso seje diferente voce poderá atribui-lo da seguinte forma: lembre-se é um exemplo;
$object->municipio = 'São Paulo';
ou
$cidade = 'São Paulo'
$object->municipio = $cidade';
Lembrando que o PHP é casesensitive.
Mostro aqui tambem como vc acessa os dados, no caso do $param poderá "como exemplo" ser acessados desta forma
$param['municipio'];
var_dump( $param['municipio'] );
var_dump( $data->municipio );
Alex,
notei tambem que esta retornando um array multidimencional,
hpp, fatorRisco, tc, e outros...
Neste caso, o relacionamento $object e $data irá falhar nestes campos, assim vc poderá preparar o valor e depois adciona-lo
["hpp"]=> array(1) { [0]=> string(3) "HAS"}
No exemplo acima vc pode acessar o valor da seguinte forma
$data->hpp[0] isso irá retornar o valor "HAS"
No entanto se outros valore forem atribuidos, e vc quiser eles no mesmo campos vc terá que usar um "foreach" antes de atribuir o valor ao campo