diff --git a/expenses.php b/expenses.php index 2eb3980..ec29723 100644 --- a/expenses.php +++ b/expenses.php @@ -1,6 +1,7 @@ prepare($countSql); +$countStmt->execute($params); +$countResult = $countStmt->fetch(PDO::FETCH_ASSOC); +$totalExpenses = $countResult['count']; +$grandTotalAmount = $countResult['total_amount'] ?? 0; + +$pagination = getPagination($page, $totalExpenses, $perPage); + +// Fetch Items $sql = "SELECT e.*, c.name as category_name, u.username as created_by_name FROM expenses e LEFT JOIN expense_categories c ON e.category_id = c.id LEFT JOIN users u ON e.user_id = u.id - WHERE e.date BETWEEN ? AND ?"; -$params = [$date_from, $date_to]; + WHERE $whereClause + ORDER BY e.date DESC, e.id DESC + LIMIT ? OFFSET ?"; -if ($category_filter) { - $sql .= " AND e.category_id = ?"; - $params[] = $category_filter; -} -if ($search) { - $sql .= " AND (e.description LIKE ? OR e.vendor LIKE ? OR e.reference LIKE ?)"; - $params[] = "%$search%"; - $params[] = "%$search%"; - $params[] = "%$search%"; -} - -$sql .= " ORDER BY e.date DESC, e.id DESC"; +// Add LIMIT/OFFSET to params +$params[] = $pagination['limit']; +$params[] = $pagination['offset']; $stmt = db()->prepare($sql); -$stmt->execute($params); +foreach ($params as $k => $v) { + $type = is_int($v) ? PDO::PARAM_INT : PDO::PARAM_STR; + $stmt->bindValue($k + 1, $v, $type); +} +$stmt->execute(); $expenses = $stmt->fetchAll(PDO::FETCH_ASSOC); // Fetch Categories for Dropdown @@ -299,9 +328,16 @@ if (isset($_SESSION['success'])) { -