35429-vm/expenses.php
2025-11-02 20:12:50 +00:00

97 lines
4.2 KiB
PHP

<?php
require_once 'db/config.php';
require_once 'includes/header.php';
try {
$pdo = db();
$stmt = $pdo->query("SELECT id, expense_date, description, amount, category FROM expenses ORDER BY expense_date DESC");
$expenses = $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
// Handle error, for now just display a message
echo '<div class="alert alert-danger">Error fetching expenses: ' . $e->getMessage() . '</div>';
$expenses = [];
}
?>
<div class="container mt-4">
<div class="d-flex justify-content-between align-items-center mb-3">
<h1 class="h2">Expenses</h1>
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#addExpenseModal">
Add Expense
</button>
</div>
<div class="card">
<div class="card-body">
<table class="table table-hover">
<thead class="table-light">
<tr>
<th>Date</th>
<th>Description</th>
<th>Amount</th>
<th>Category</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<?php if (empty($expenses)): ?>
<tr>
<td colspan="5" class="text-center">No expenses found.</td>
</tr>
<?php else: ?>
<?php foreach ($expenses as $expense): ?>
<tr>
<td><?php echo htmlspecialchars($expense['expense_date']); ?></td>
<td><?php echo htmlspecialchars($expense['description']); ?></td>
<td><?php echo htmlspecialchars(number_format($expense['amount'], 2)); ?></td>
<td><?php echo htmlspecialchars($expense['category']); ?></td>
<td>
<!-- Actions like edit/delete can be added here -->
</td>
</tr>
<?php endforeach; ?>
<?php endif; ?>
</tbody>
</table>
</div>
</div>
</div>
<!-- Add Expense Modal -->
<div class="modal fade" id="addExpenseModal" tabindex="-1" aria-labelledby="addExpenseModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="addExpenseModalLabel">Add New Expense</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<form action="add_expense.php" method="POST">
<div class="mb-3">
<label for="expense_date" class="form-label">Date</label>
<input type="date" class="form-control" id="expense_date" name="expense_date" required>
</div>
<div class="mb-3">
<label for="description" class="form-label">Description</label>
<input type="text" class="form-control" id="description" name="description" required>
</div>
<div class="mb-3">
<label for="amount" class="form-label">Amount</label>
<input type="number" step="0.01" class="form-control" id="amount" name="amount" required>
</div>
<div class="mb-3">
<label for="category" class="form-label">Category</label>
<input type="text" class="form-control" id="category" name="category">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
<button type="submit" class="btn btn-primary">Save Expense</button>
</div>
</form>
</div>
</div>
</div>
</div>
<?php require_once 'includes/footer.php'; ?>