Aula 16: Implementando a Funcionalidade de Edição de Tarefas (updateTask())

Por: Nerd Toolkit Postado em: Outubro 21, 2024 Visto por: 432

1. Visão Geral da Edição de Tarefas

Para permitir a edição de uma tarefa, precisamos:

  1. Buscar os dados da tarefa atual no banco de dados.
  2. Exibir os dados em um formulário, permitindo que o usuário faça as alterações.
  3. Atualizar o banco de dados com as novas informações após a submissão do formulário.

2. Criando o Método updateTask()

Na classe Task.php, vamos implementar o método updateTask(), responsável por atualizar uma tarefa no banco de dados com base no ID da tarefa.

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();
}

Aqui:

  • A consulta SQL usa placeholders (?) para prevenir ataques de SQL Injection.
  • A função bind_param() associa os valores fornecidos pelo usuário aos placeholders na consulta.
  • O método retorna true se a execução for bem-sucedida e false caso contrário.

3. Criando o Formulário de Edição

Agora vamos criar uma página edit_task.php que permitirá ao usuário editar uma tarefa existente. O formulário será preenchido com os dados atuais da tarefa, que poderão ser alterados e enviados para atualização.

<?php
require_once 'classes/Database.php';
require_once 'classes/Task.php';
$database = new Database();
$db = $database->getConnection();
$task = new Task($db);
// Verifica se um ID foi passado via GET
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 o formulário quando o usuário enviar
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>

4. Testando a Funcionalidade de Edição

  • Passo 1: Acesse a página tasks.php e, ao lado de cada tarefa, adicione um link "Editar" que levará à página de edição. O link deve passar o ID da tarefa pela URL.

    <a href="edit_task.php?id=<?php echo $row['id']; ?>" class="btn btn-warning btn-sm">Editar</a>
  • Passo 2: Após clicar no botão de "Editar", você será redirecionado para a página edit_task.php, onde os dados atuais da tarefa serão carregados no formulário. Faça as alterações e clique em "Atualizar Tarefa" para ver se os dados são atualizados corretamente.

5. Segurança no Update

Aqui estão algumas práticas importantes para manter a segurança na funcionalidade de edição:

  • SQL Injection: Utilizamos prepare() e bind_param() para evitar ataques de SQL Injection.
  • Validação de Dados: Certifique-se de validar os dados do formulário antes de enviá-los para o banco de dados.
  • Confirmação de Atualização: Adicione mensagens de confirmação para informar o usuário sobre o sucesso ou falha na operação de edição.

6. Exercício Prático

  • Tente adicionar um campo de "Prioridade" para cada tarefa e inclua-o na funcionalidade de edição.
  • Experimente adicionar um campo de "Data de Conclusão" para tarefas e implemente essa nova funcionalidade na classe Task.

7. Próximos Passos

Na próxima aula, vamos continuar aprimorando nosso projeto, adicionando novas funcionalidades e recursos para tornar o sistema de tarefas mais robusto e completo.

Tags:
#editar tarefa PHP  # updateTask PHP  # PHP OOP CRUD  # atualizar tarefa MySQL  # gerenciamento de tarefas PHP  # editar dados MySQL PHP  # PHP e MySQL 

Notícias Relacionadas

Aula 16: Implementando a Funcionalidade de Edição de Tarefas (updateTask())
  Contato
  • support@nerdtoolkit.com.br
Mapa do Site
Mostrar mapa do site
  Sobre

Feito de programadores para programadores.

Este site utiliza cookies. Ao continuar a utilizar este site, você concorda com a nossa utilização de cookies e política de privacidade.
Leia mais Concordo