setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Ensure the URL parameters work with or without trailing slash $uri = $_SERVER['REQUEST_URI']; parse_str(parse_url($uri, PHP_URL_QUERY), $queryParams); // Default values: current month $currentYear = date('Y'); $currentMonth = date('m'); $currentMonthStart = date('Y-m-01'); $currentMonthEnd = date('Y-m-t'); // Extract query parameters $startDate = isset($queryParams['start_date']) ? $queryParams['start_date'] : $currentMonthStart; $endDate = isset($queryParams['end_date']) ? $queryParams['end_date'] : $currentMonthEnd; $selectedMonth = isset($queryParams['month']) ? $queryParams['month'] : "$currentYear-$currentMonth"; // If month is selected, override date range if (isset($queryParams['month']) && preg_match('/^\d{4}-\d{2}$/', $selectedMonth)) { $startDate = date('Y-m-01', strtotime($selectedMonth)); $endDate = date('Y-m-t', strtotime($selectedMonth)); } // Validate date format if (!preg_match('/^\d{4}-\d{2}-\d{2}$/', $startDate) || !preg_match('/^\d{4}-\d{2}-\d{2}$/', $endDate)) { die("Invalid date format. Please use YYYY-MM-DD."); } $stmt = $db->prepare(" SELECT e.customerId, c.name, e.emiAmount, e.emiDate, e.payStatus, e.outstanding FROM emi e JOIN customers c ON e.customerId = c.customerId WHERE e.emiDate BETWEEN :startDate AND :endDate ORDER BY e.emiDate ASC"); $stmt->bindParam(':startDate', $startDate); $stmt->bindParam(':endDate', $endDate); $stmt->execute(); $emiPlans = $stmt->fetchAll(PDO::FETCH_ASSOC); // Calculate total demand amount $totalDemand = array_sum(array_column($emiPlans, 'emiAmount')); } catch (PDOException $e) { die("Database error: " . $e->getMessage()); } ?>

Pending EMIs ()

OR
Customer Name EMI Amount EMI Date Pay Status Outstanding
$ Pending Paid $
No pending EMIs in this period

Total Demand EMI Amount: $