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

Como exibir mensagem melhor para o Erro ao excluir categoria por dependência chave estrangeira na tabela produto

Pessoal td bem? Ao excluir categoria aparece esse mensagem

SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (`estoque`.`produtos`, CONSTRAINT `fk_categorias` FOREIGN KEY (`categoria_id`) REFERENCES `categorias` (`id`))

Gostaria de mostrar uma mensagem amigável na tela para o cliente. por exemplo:

Não é possivel excluir categorias, pois existem produtos relacionados a ela

Gostaria de mostrar essa mensagem na tela de listar mesmo para melhorar a usabilidade para o usuário.

Como fazer?

4 respostas

Tiago, boa tarde!

Você pode pegar o retorno dessa função de excluir, caso o retorno seja false você retorna a mensagem especifica, se for verdadeira foi excluída com sucesso!

Espero ter ajudado e bons estudos!

Pensando na utilização do try catch, como poderia tratar especificamente o erro abaixo?

SQLSTATE[23000]: Integrity constraint violation: 1451

@Felipe ao utilizar essa forma de verificação, você concorda que fica meio genérico para qualquer problema no banco de dados? Gostaria de tratar o erro de forma mais específica nesse exemplo que passei

solução!

Tiago, boa tarde!

Uma forma de tratar esse erro seria usar o try catch, e usar os próprios recursos do PDO, uma de suas funcionalidades é o $statement->errorInfo();

Lançamos aqui na Alura também temos sobre Exceptions com PHP (https://cursos.alura.com.br/course/tratamento-de-erros-php) eu recomendo fortemente você fazer.

https://www.php.net/manual/pt_BR/pdo.errorinfo.php

Além disso tem a maneira mais simples, de se fazer que seria:

try{
    $stmt->execute();
}catch(PDOException $e){
    echo $e->getMessage();
}

Esse código tenta executar, e caso não execute ele retorna a mensagem de erro;

Eu espero ter ajudado e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software