Clique aqui e veja todas as aulas
1. Editando Tarefas
Para editar uma tarefa, precisamos de um formulário que permita carregar os dados atuais da tarefa e atualizá-los no banco de dados.
Passo 1: Criando o Método updateTask()
No arquivo Task.php, vamos adicionar o método updateTask() para atualizar as tarefas no banco de dados.
public function updateTask() {
$query = "UPDATE " . $this->table_name . "
SET name = ?, description = ?, status = ?
WHERE id = ?";
$stmt = $this->conn->prepare($query);
$stmt->bind_param("sssi", $this->name, $this->description, $this->status, $this->id);
return $stmt->execute();
}
Passo 2: Atualizando o Formulário para Edição
Agora, vamos criar uma página para editar a tarefa. Esta página carrega os dados da tarefa que será editada e permite que o usuário os altere.
Crie um arquivo edit_task.php com o seguinte conteúdo:
<?php
require_once 'classes/Database.php';
require_once 'classes/Task.php';
$database = new Database();
$db = $database->getConnection();
$task = new Task($db);
// Verificar se o ID da tarefa foi passado
if (isset($_GET['id'])) {
$task->id = $_GET['id'];
$result = $task->getTaskById();
if ($result) {
$row = $result->fetch_assoc();
$task->name = $row['name'];
$task->description = $row['description'];
$task->status = $row['status'];
}
}
// Processar a atualização
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$task->name = $_POST['name'];
$task->description = $_POST['description'];
$task->status = $_POST['status'];
if ($task->updateTask()) {
echo "Tarefa atualizada com sucesso!";
} else {
echo "Erro ao atualizar a tarefa.";
}
}
?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Editar Tarefa</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head>
<body>
<div class="container mt-5">
<h2>Editar Tarefa</h2>
<form method="post">
<div class="form-group">
<label for="name">Nome da Tarefa</label>
<input type="text" name="name" class="form-control" value="<?php echo $task->name; ?>" required>
</div>
<div class="form-group">
<label for="description">Descrição</label>
<textarea name="description" class="form-control" required><?php echo $task->description; ?></textarea>
</div>
<div class="form-group">
<label for="status">Status</label>
<input type="text" name="status" class="form-control" value="<?php echo $task->status; ?>" required>
</div>
<button type="submit" class="btn btn-primary">Atualizar Tarefa</button>
</form>
</div>
</body>
</html>
2. Excluindo Tarefas
Agora, vamos adicionar a funcionalidade para excluir uma tarefa.
Passo 1: Criando o Método deleteTask()
No arquivo Task.php, adicione o seguinte método para deletar uma tarefa:
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();
}
Passo 2: Criando a Lógica de Exclusão na Página de Listagem
Na página tasks.php, vamos adicionar botões para editar e excluir tarefas. Atualize o código da listagem para incluir os botões de ação:
<ul class="list-group mt-3">
<?php while ($row = $tarefas->fetch_assoc()): ?>
<li class="list-group-item d-flex justify-content-between align-items-center">
<div>
<h5><?php echo $row['name']; ?></h5>
<p><?php echo $row['description']; ?></p>
<span class="badge badge-info"><?php echo $row['status']; ?></span>
</div>
<div>
<a href="edit_task.php?id=<?php echo $row['id']; ?>" class="btn btn-warning btn-sm">Editar</a>
<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>
</div>
</li>
<?php endwhile; ?>
</ul>
Passo 3: Criando a Página de Exclusão
Por fim, crie a página delete_task.php para processar a exclusão da tarefa:
<?php
require_once 'classes/Database.php';
require_once 'classes/Task.php';
$database = new Database();
$db = $database->getConnection();
$task = new Task($db);
// Verificar se o ID da tarefa foi passado
if (isset($_GET['id'])) {
$task->id = $_GET['id'];
if ($task->deleteTask()) {
echo "Tarefa excluída com sucesso!";
} else {
echo "Erro ao excluir a tarefa.";
}
}
?>
<a href="tasks.php">Voltar para a lista de tarefas</a>
3. Testando as Funcionalidades de Edição e Exclusão
- Teste de Edição: Vá até a página de listagem de tarefas, clique em "Editar" em uma tarefa, atualize os dados e veja se eles são refletidos corretamente.
- Teste de Exclusão: Clique no botão "Excluir" e confirme a exclusão da tarefa. Verifique se a tarefa foi removida do banco de dados e da interface.
4. Exercício Prático
- Adicione uma confirmação visual (alertas ou mensagens) após a edição ou exclusão bem-sucedida de uma tarefa.
- Experimente adicionar uma coluna de "Prioridade" para cada tarefa e permita que o usuário edite essa nova informação.
5. Próximos Passos
Agora que completamos as funcionalidades de CRUD, vamos continuar aprimorando o projeto, integrando mais recursos, como a ordenação e filtragem de tarefas, e a possibilidade de marcar tarefas como concluídas diretamente na interface.
