127 lines
5.1 KiB
PHP
127 lines
5.1 KiB
PHP
<?php
|
|
require_once __DIR__ . '/db/config.php';
|
|
|
|
if (session_status() === PHP_SESSION_NONE) {
|
|
session_start();
|
|
}
|
|
|
|
// Proteger a página
|
|
if (!isset($_SESSION['user_id'])) {
|
|
header('Location: login.php');
|
|
exit;
|
|
}
|
|
|
|
$expense_id = $_GET['id'] ?? null;
|
|
$user_id = $_SESSION['user_id'];
|
|
$error_message = '';
|
|
$expense = null;
|
|
|
|
if (!$expense_id) {
|
|
header('Location: expenses.php');
|
|
exit;
|
|
}
|
|
|
|
$pdo = db();
|
|
|
|
// Buscar a despesa para garantir que ela pertence ao usuário
|
|
try {
|
|
$stmt = $pdo->prepare("SELECT * FROM expenses WHERE id = :id AND user_id = :user_id");
|
|
$stmt->execute(['id' => $expense_id, 'user_id' => $user_id]);
|
|
$expense = $stmt->fetch(PDO::FETCH_ASSOC);
|
|
|
|
if (!$expense) {
|
|
$_SESSION['error_message'] = 'Despesa não encontrada.';
|
|
header('Location: expenses.php');
|
|
exit;
|
|
}
|
|
} catch (PDOException $e) {
|
|
$_SESSION['error_message'] = 'Erro ao buscar despesa.';
|
|
header('Location: expenses.php');
|
|
exit;
|
|
}
|
|
|
|
// Lógica para atualizar a despesa
|
|
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|
$description = $_POST['description'] ?? '';
|
|
$amount = $_POST['amount'] ?? '';
|
|
$category = $_POST['category'] ?? '';
|
|
$expense_date = $_POST['expense_date'] ?? '';
|
|
|
|
if (empty($description) || empty($amount) || empty($category) || empty($expense_date)) {
|
|
$error_message = 'Todos os campos são obrigatórios.';
|
|
} else {
|
|
try {
|
|
$sql = "UPDATE expenses SET description = :description, amount = :amount, category = :category, expense_date = :expense_date WHERE id = :id AND user_id = :user_id";
|
|
$stmt = $pdo->prepare($sql);
|
|
$stmt->execute([
|
|
'description' => $description,
|
|
'amount' => $amount,
|
|
'category' => $category,
|
|
'expense_date' => $expense_date,
|
|
'id' => $expense_id,
|
|
'user_id' => $user_id
|
|
]);
|
|
|
|
$_SESSION['success_message'] = 'Despesa atualizada com sucesso!';
|
|
header('Location: expenses.php');
|
|
exit;
|
|
|
|
} catch (PDOException $e) {
|
|
$error_message = 'Erro ao atualizar a despesa: ' . $e->getMessage();
|
|
}
|
|
}
|
|
}
|
|
|
|
include __DIR__ . '/includes/header.php';
|
|
?>
|
|
|
|
<div class="container mt-4">
|
|
<div class="row justify-content-center">
|
|
<div class="col-md-6">
|
|
<div class="card">
|
|
<div class="card-body">
|
|
<h4 class="card-title">Editar Despesa</h4>
|
|
|
|
<?php if ($error_message): ?>
|
|
<div class="alert alert-danger"><?php echo htmlspecialchars($error_message); ?></div>
|
|
<?php endif; ?>
|
|
|
|
<form method="POST" action="edit_expense.php?id=<?php echo htmlspecialchars($expense_id); ?>">
|
|
<div class="mb-3">
|
|
<label for="description" class="form-label">Descrição</label>
|
|
<input type="text" class="form-control" id="description" name="description" value="<?php echo htmlspecialchars($expense['description']); ?>" required>
|
|
</div>
|
|
<div class="mb-3">
|
|
<label for="amount" class="form-label">Valor (R$)</label>
|
|
<input type="number" step="0.01" class="form-control" id="amount" name="amount" value="<?php echo htmlspecialchars($expense['amount']); ?>" required>
|
|
</div>
|
|
<div class="mb-3">
|
|
<label for="category" class="form-label">Categoria</label>
|
|
<select class="form-select" id="category" name="category" required>
|
|
<option value="">Selecione...</option>
|
|
<?php
|
|
$categories = ['Alimentação', 'Transporte', 'Moradia', 'Lazer', 'Saúde', 'Outros'];
|
|
foreach ($categories as $cat) {
|
|
$selected = ($expense['category'] === $cat) ? 'selected' : '';
|
|
echo "<option value=\"".htmlspecialchars($cat)."\" $selected>".htmlspecialchars($cat)."</option>";
|
|
}
|
|
?>
|
|
</select>
|
|
</div>
|
|
<div class="mb-3">
|
|
<label for="expense_date" class="form-label">Data da Despesa</label>
|
|
<input type="date" class="form-control" id="expense_date" name="expense_date" value="<?php echo htmlspecialchars($expense['expense_date']); ?>" required>
|
|
</div>
|
|
<div class="d-grid gap-2 d-md-flex justify-content-md-end">
|
|
<a href="expenses.php" class="btn btn-secondary">Cancelar</a>
|
|
<button type="submit" class="btn btn-primary">Salvar Alterações</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<?php include __DIR__ . '/includes/footer.php'; ?>
|