Segui o exemplo de CRUD disponível no site para criar um cadastro de países.
Esta funcionando corretamente na alteração quando clico no ícone alterar de algum país na aba listagem, os dados aparecem na aba Cadastro, faço a alteração, clico em salvar e os dados são gravados corretamente na tabela.
Porém, quando clico em limpar, digito o código e nome do país e clico em salvar os dados não são gravados na tabela. Quando clico no botão excluir de algum país na aba listagem ele também não é excluido.
Segue o código abaixo:
// paises.php
<?php
$frm = new TForm('Paises');
//$frm->addHiddenField('id');
$pc = $frm->addPageControl('pc');
$pc->addPage('Cadastro',true,true,'abaCadastro');
$frm->addTextField('co_pais','Código:',5,true);
$frm->addTextField('no_pais','Nome:',30,true);
$frm->addButton('Salvar','salvar','btnSalvar',null,null,true,false);
$frm->addButton('Limpar','limpar','btnLimpar',null,null,false,false);
$pc->addPage('Listagem');
$frm->addHtmlField('html_gride','Aqui será carregado o gride');
$frm->processAction();
$g = new TGrid('gd','Listagem dos Países',Tb_paisDAO::selectAll('no_pais'),null,null,'co_pais');
$frm->set('html_gride',$g); // ou também, $frm->getField('gride')->add($g);
$frm->show();
?>
// salvar.php
<?php
$vo = new Tb_paisVO();
$frm->setVo($vo);
if( Tb_paisDAO::insert($vo) )
{
$frm->setMessage('País salvo com SUCESSO!');
include('limpar.php');
}
else
{
$frm->addError(Tb_paisDAO::getError());
}
?>
// gd_excluir.php
<?php
Tb_paisDAO::delete($frm->get('co_pais'));
?>
Autor: Leandro Santos
1010 comentários
{
if( $objVo->getCo_pais() )
{
return self::update($objVo);
}
$values = array( $objVo->getCo_pais()
,$objVo->getNo_pais()
);
return self::executeSql('insert into tb_pais(
co_pais
,no_pais
) values (?,?)', $values );
}
//--------------------------------------------------------------------------------
public function delete( $id )
{
$values = array($id);
return self::executeSql('delete from tb_pais where co_pais = ?',$values);
}
{
if( $objVo->getCo_pais() )
{
return self::update($objVo);
}
$values = array( $objVo->getCo_pais()
,$objVo->getNo_pais()
);
return self::executeSql('insert into tb_pais(
co_pais
,no_pais
) values (?,?)', $values );
} Esse é o seu codigo. A situação ocorre por causa da validação que é feita para saber se é um "insert" ou "update", if( $objVo->getCo_pais() )
{
return self::update($objVo);
} Ele verifica se existe o dado no campo "co_pais" e se tiver ele vai para o update e ignora o lance do insert. Ai cabe a você escolher o que é interessante, alterar o codigo para que tudo que vier usar o "insert" ou manter o formato e alterar o metodo.
Como informo o novo código na tela o método tenta fazer o update e com isso não faz nada. Tenho que fazer uma validação neste ponto para saber se trata-se de uma inclusão ou alteração.
Obrigado.
{
//if( $objVo->getCo_pais() )
$values = self::select($objVo->getCo_pais());
if( $values )
{
return self::update($objVo);
}
$values = array( $objVo->getCo_pais()
, $objVo->getNo_pais()
);
return self::executeSql('insert into tb_pais(
co_pais
,no_pais
) values (?,?)', $values );
} Mas isto gerou um outro probleminha, por exemplo, caso o usuário ao tentar incluir um novo país informe um código já existente na tabela e uma descrição qualquer ao clicar em salvar o país que está cadastrado na tabela será alterado pelo que o usuário informou. Alguém tem uma sugestão para melhorar isto?