JAMES WEB

Aprenda como se faz.


Sumário

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>

update-user

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:

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.