Clique aqui e veja todas as aulas
1. Visão Geral da Exclusão de Tarefas
Para excluir uma tarefa, o fluxo básico será:
- O usuário clica em um botão ou link para excluir a tarefa.
- O sistema pede uma confirmação (opcional).
- A tarefa é excluída do banco de dados com base no seu ID.
2. Criando o Método deleteTask()
No arquivo Task.php, vamos adicionar o método deleteTask(), responsável por remover uma tarefa com base no ID fornecido
public function deleteTask() {
$query = "DELETE FROM " . $this->table_name . " WHERE id = ?";
$stmt = $this->conn->prepare($query);
$stmt->bind_param("i", $this->id);
return $stmt->execute();
}
- O método
deleteTask()prepara e executa uma consultaDELETEno banco de dados usando o ID da tarefa como condição. - Usamos
bind_param()para associar o ID ao placeholder na consulta, protegendo contra SQL Injection.
3. Implementando a Exclusão de Tarefas
Na página de exibição de tarefas (tasks.php), vamos adicionar um link "Excluir" ao lado de cada tarefa. Esse link vai redirecionar para a página que processa a exclusão.
<a href="delete_task.php?id=<?php echo $row['id']; ?>" class="btn btn-danger btn-sm">Excluir</a>
4. Criando o Arquivo delete_task.php
O arquivo delete_task.php será responsável por processar a exclusão de tarefas. Ele vai receber o ID da tarefa via GET, chamar o método deleteTask() e redirecionar o usuário de volta à lista de tarefas.
<?php
require_once 'classes/Database.php';
require_once 'classes/Task.php';
$database = new Database();
$db = $database->getConnection();
$task = new Task($db);
// Verifica se o ID foi passado via GET
if (isset($_GET['id'])) {
$task->id = $_GET['id'];
// Exclui a tarefa
if ($task->deleteTask()) {
echo "Tarefa excluída com sucesso!";
} else {
echo "Erro ao excluir a tarefa.";
}
// Redireciona de volta à página de tarefas
header("Location: tasks.php");
}
5. Testando a Funcionalidade de Exclusão
Para testar:
- Acesse a lista de tarefas e veja o link "Excluir" ao lado de cada tarefa.
- Clique no link "Excluir" e veja se a tarefa é removida da lista e do banco de dados.
- Se desejar, adicione uma mensagem de confirmação antes de excluir a tarefa para evitar exclusões acidentais.
6. Segurança na Exclusão
Aqui estão algumas práticas de segurança para implementar a exclusão de tarefas:
- SQL Injection: Usamos
prepare()ebind_param()para evitar SQL Injection. - Confirmação de Exclusão: Para evitar exclusões acidentais, você pode implementar uma janela de confirmação antes de a tarefa ser realmente excluída.
Exemplo de confirmação via JavaScript:
<a href="delete_task.php?id=<?php echo $row['id']; ?>" class="btn btn-danger btn-sm" onclick="return confirm('Tem certeza que deseja excluir esta tarefa?')">Excluir</a>
7. Exercício Prático
Adicione um sistema de confirmação de exclusão e, se o tempo permitir, implemente um sistema de arquivamento de tarefas. Em vez de excluir, o sistema arquivaria a tarefa para que pudesse ser recuperada mais tarde.
8. Próximos Passos
Na próxima aula, continuaremos aperfeiçoando o sistema de gerenciamento de tarefas com mais funcionalidades. Agora que temos o CRUD básico (Create, Read, Update, Delete) completo, vamos trabalhar em detalhes adicionais.
