JAMES WEB
Aprenda como se faz.
CRUD Usuários (Deletar usuário)
Chegamos ao último procedimento de manipulação de dados do usuário pelo famoso “CRUD”. A exclusão é chamada através do botão “Excluir” do template “users.html”. Localize e edite a linha no arquivo conforme o exemplo a seguir:
<a href=”/ecommerce/admin/users_delete/{$value.iduser}” onclick=”return confirm(‘Deseja realmente excluir este registro?’)” class=”btn btn-danger btn-xs”><i class=”fa fa-trash”></i> Excluir</a>

O processo de exclusão de usuários em sistemas web envolve mais do que simplesmente remover um registro de um banco de dados. É fundamental garantir a integridade dos dados, a segurança do sistema e uma boa experiência para o usuário.
Os códigos demonstram uma abordagem robusta para a exclusão de usuários, combinando elementos do HTML, JavaScript, PHP e SQL. A principal característica desta solução é a confirmação de exclusão antes da execução da ação, evitando exclusões acidentais.
Etapas do processo:
- Interface do Usuário: Um botão “Excluir” gera um link que, ao ser clicado, exibe uma caixa de diálogo solicitando confirmação.
- Processamento do Lado do Servidor: Ao confirmar a exclusão, o sistema processa a requisição, verificando a autenticação do usuário e obtendo os dados do usuário a ser excluído.
- Exclusão do Banco de Dados: A exclusão é realizada por meio de um procedimento armazenado (stored procedure) que garante a exclusão consistente dos dados nas tabelas relacionadas, evitando problemas de integridade.
- Redirecionamento: Após a exclusão, o usuário é redirecionado para uma lista de usuários atualizada, confirmando a operação.
Chamando a exclusão no painel administrativo
O código apresentado acima gera um link (anchor) que, quando clicado, apresenta uma caixa de confirmação ao usuário antes de executar a ação de exclusão. Esse é mecanismo para evitar exclusões acidentais de dados importantes.
Veja como funciona:
- <a href=”/ecommerce/admin/users_delete/{$value.iduser}”>:
- <a>: Esta tag HTML define um link para outra página.
- href=”/ecommerce/admin/users_delete/{$value.iduser}”: Este atributo especifica o endereço (URL) para onde o usuário será direcionado ao clicar no link.
- &id={$value.iduser}: Indica outro parâmetro chamado “id”. O valor deste parâmetro é dinâmico e é obtido de uma variável PHP chamada $value.iduser. Esse valor corresponde ao ID do registro que está sendo excluído e é passado via url.
- onclick=”return confirm(‘Deseja realmente excluir este registro?’)”:
- onclick: Este atributo define uma função JavaScript que será executada quando o usuário clicar no link.
- return confirm(‘Deseja realmente excluir este registro?’): A função confirm() exibe uma caixa de diálogo com a mensagem “Deseja realmente excluir este registro?”. Se o usuário clicar em “OK”, a função retorna true, caso contrário, retorna false. O valor retornado por essa função determina se o link será seguido ou não.
- class=”btn btn-danger btn-xs” class: Este atributo define as classes CSS que serão aplicadas ao elemento . As classes “btn”, “btn-danger” e “btn-xs” são usadas para estilizar o link como um botão de perigo (geralmente vermelho) de tamanho extra pequeno, utilizando um framework CSS como o Bootstrap.
- <i class=”fa fa-trash”></i>:
- <i>: Esta tag define um ícone.
- class=”fa fa-trash”: A classe “fa fa-trash” é usada para exibir o ícone de lixeira do Font Awesome, um conjunto de ícones utilizado em muitos projetos web.
- Excluir: Este é o texto visível do link. Ele indica a ação que será realizada ao clicar no link.
Rota excluir usuário (delete)
Após confirmar a exclusão do registro, acessamos a rota excluir usuário descrita a seguir. Ela deverá ser inserida no arquivo admin-users.php. Veja o exemplo a seguir:
PHP: admin-users.php > inserindo Rota Deletar Usuário
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?php // ... Inicio do código // Rota deletar usuário - users_delete // Botão Excluir Template users.html $app ->get( '/admin/users_delete/:iduser' , function ( $iduser ) { User::verifyLogin(); $user = new User(); $user ->get((int) $iduser ); $user -> delete (); header( "Location: /ecommerce/admin/users" ); exit ; }); ?> // ... Resto do código ?> |
Explicando linha por linha:
- L6 – $app->get(‘/admin/users_delete/:iduser’, function($iduser) {… Essa linha define uma nova rota GET dentro da aplicação. A rota é acessível pelo URL /admin/users_delete/:iduser, onde :iduser é o ID do usuário que será capturado e passado para a função anônima.
- L7 – User::verifyLogin();: Essa linha chama um método estático da classe User para verificar se o usuário está logado. Se o usuário não estiver autenticado, provavelmente será redirecionado ou exibida alguma mensagem de erro.
- L8 – $user = new User(); cria um novo objeto User que representa o usuário do sistema.
- L9 – $user->get((int)$iduser); Busca as informações do usuário com o ID correspondente no banco de dados.
- L10 – $user->delete();: Essa linha chama o método delete do objeto $user, que exclui o registro do usuário do banco de dados.
- L11 – header(“Location: /ecommerce/admin/users”); Essa linha define um cabeçalho de redirecionamento, indicando que o navegador deve ser redirecionado para a URL /ecommerce/admin/users (Lista de Usuários).
- L12 – exit;: Essa linha interrompe a execução do script, evitando que qualquer código subsequente seja executado.
Função delete()
Na rota excluir usuário a função delete() é chamada na linha 10 “$user->delete();“. Ela executa a exclusão auxiliada pela procedure sp_users_delete. A função delete deve ser inserida no arquivo user.php na classe User.
PHP: user.php > inserindo função delete:
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php // ... Inicio do código public function delete () { $sql = new Sql(); $sql ->query( "CALL sp_users_delete(:iduser)" , array ( ":iduser" => $this ->getiduser() )); } // ... Resto do código ?> |
Explorando linha por linha a função delete:
- L4 – public function delete(): Essa linha declara um método público chamado delete dentro da classe User. Esse método não recebe nenhum parâmetro.
- L6 – $sql = new Sql();: Cria-se um novo objeto da classe Sql, que é uma classe utilitária para executar consultas SQL.
- L7 – $sql->query(“CALL sp_users_delete(:iduser)”, array(…));:
Essa linha chama o método query do objeto Sql, passando dois parâmetros:
- “CALL sp_users_delete(:iduser)”: Essa é a consulta SQL que será executada. A palavra-chave CALL indica que está sendo chamada uma procedure armazenada (stored procedure) no banco de dados chamada sp_users_delete. O parâmetro :iduser é um marcador de posição que será substituído pelo valor real do ID do usuário.
- array(“:iduser”=>$this->getiduser()): Esse é um array associativo que contém os valores dos parâmetros da consulta. O marcador de posição :iduser será substituído pelo valor retornado pelo método $this->getiduser().
Procedure delete sp_users_delete
O código apresentado é um procedimento armazenado (stored procedure) em SQL, responsável por excluir um usuário do banco de dados, considerando a relação entre as tabelas tb_users e tb_persons. Faça o download do arquivo e execute a sql no banco de dados db_ecommerce.
1 2 3 4 5 6 7 8 9 10 11 12 | BEGIN DECLARE vidperson INT; SELECT idperson INTO vidperson FROM tb_users WHERE iduser = piduser; DELETE FROM tb_users WHERE iduser = piduser; DELETE FROM tb_persons WHERE idperson = vidperson; END |
Explicando linha por linha a Procdure sp_users_delete:
- L1 – BEGIN Início do Procedimento: Indica o início do procedimento armazenado.
- L3 – DECLARE vidperson INT; Declara uma variável inteira chamada vidperson para armazenar o idperson do usuário a ser excluído.
- L5 – SELECT idperson INTO vidperson FROM tb_users WHERE iduser = piduser; Seleciona o valor do idperson da tabela tb_users onde o iduser é igual a piduser. O valor selecionado é atribuído à variável vidperson. Isso é feito para obter o idperson do usuário antes de excluir os registros relacionados.
- L9 – DELETE FROM tb_users WHERE iduser = piduser; Exclui o registro da tabela tb_users onde o iduser é igual a piduser.
- L10 – DELETE FROM tb_persons WHERE idperson = vidperson; Exclui o registro da tabela tb_persons onde o idperson é igual a vidperson. Isso garante que a exclusão seja consistente, evitando registros órfãos.
- L12 – END Indica o fim do procedimento armazenado.