Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

E se eu clicar em voltar no navegador depois de inserir um registro

Depois que faço a inserção de um registro na tabela, se eu clicar em voltar no navegador, os campos estão todos preenchidos como deixei anteriormente. E se eu clicar em salvar, vai ser criado um registro repetido. Como evitar esse problema ao clicar em voltar no navegador?

5 respostas

Oi Bruno, esse problema se não me engano é resolvido com um redirect logo após você fazer o post. Fez o post, inseriu, dá um redirect pra outra página.

Você deve criar um método que verifica a duplicidade dependendo da sua regra de negócio, por EX: No meu sistema não deve ser possível existir um produto com o mesmo nome;

No ProdutoDAO

function insereProduto($produto)
    {
        if($this->VerificaSeNaoExiste($produto->getNome())){
        // logica de inserção            
        }else{
        //mensagens e afins 
}
}

  function VerificaSeNaoExiste($nome)
    {

        $sql = "select 'X' as 'X' from produtos where nome = '{$nome}'";

        $resultado = mysqli_query($this->conexao, $sql);

        // retorna True se o resultado nao tiver nenhuma linha 
        return ($resultado->num_rows == 0);


    }

Espero ter ajudado

Bruno, dá um retorno aqui por favor?

solução!

Olá. Seguinte. Não estava conseguindo resolver de uma forma legal. Até então estou tentando resolver na base do SESSION. Onde crio uma seção com o id na primeira vez. Toda vez que carrego a pagina ele verifica se existe essa SESSION. Se existir eu sei que tenho que atualizar o registro, senão eu crio um novo. Não sei se é a melhor maneira de fazer isso, mas é a que encontrei e estou utilizando por enquanto.

Entendo, até que remedia um pouco, mas com certeza não resolve por completo a questão da duplicidade.

A solução mais elegante é você ter um código único por produto. O código de barra por exemplo. Assim você pode checar por esse código como o Aroldo sugeriu acima.