prepare("DELETE FROM expenses WHERE id = ?"); $stmt->execute([$id_to_delete]); $_SESSION['message'] = 'Expense deleted successfully.'; $_SESSION['message_type'] = 'success'; } catch (PDOException $e) { $_SESSION['message'] = 'Error deleting expense: ' . $e->getMessage(); $_SESSION['message_type'] = 'danger'; } } header("Location: index.php"); exit; } // Handle Add if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['add_expense'])) { $amount = filter_input(INPUT_POST, 'amount', FILTER_VALIDATE_FLOAT); $category_id = filter_input(INPUT_POST, 'category_id', FILTER_VALIDATE_INT); $payment_method = htmlspecialchars(trim($_POST['payment_method'])); $expense_date = $_POST['expense_date']; // Basic validation, consider more robust date validation $notes = htmlspecialchars(trim($_POST['notes'])); if ($amount && $category_id && !empty($payment_method) && !empty($expense_date)) { try { $stmt = $pdo->prepare("INSERT INTO expenses (amount, category_id, payment_method, expense_date, notes) VALUES (?, ?, ?, ?, ?)"); $stmt->execute([$amount, $category_id, $payment_method, $expense_date, $notes]); $_SESSION['message'] = 'Expense added successfully!'; $_SESSION['message_type'] = 'success'; } catch (PDOException $e) { $_SESSION['message'] = 'Error adding expense: ' . $e->getMessage(); $_SESSION['message_type'] = 'danger'; } } else { $_SESSION['message'] = 'Please fill all required fields correctly.'; $_SESSION['message_type'] = 'warning'; } header("Location: index.php"); exit; } } // Flash message handling if (isset($_SESSION['message'])) { $message = $_SESSION['message']; $message_type = $_SESSION['message_type']; unset($_SESSION['message']); unset($_SESSION['message_type']); } // Fetch data for display $categories = []; $expenses = []; if ($pdo) { try { $categories = $pdo->query("SELECT * FROM categories ORDER BY name ASC")->fetchAll(); $expenses = $pdo->query("SELECT e.*, c.name as category_name FROM expenses e JOIN categories c ON e.category_id = c.id ORDER BY e.expense_date DESC, e.id DESC LIMIT 20")->fetchAll(); } catch (PDOException $e) { $message = "Error fetching data: " . $e->getMessage(); $message_type = 'danger'; } } ?>