= ?"; $params[] = $start_date . ' 00:00:00'; } if ($end_date) { $conditions[] = "s.sale_date <= ?"; $params[] = $end_date . ' 23:59:59'; } if ($payment_method) { $conditions[] = "s.payment_method = ?"; $params[] = $payment_method; } if (count($conditions) > 0) { $sql .= " WHERE " . implode(' AND ', $conditions); } $sql .= " GROUP BY s.id ORDER BY s.sale_date DESC"; $stmt = $pdo->prepare($sql); $stmt->execute($params); $sales = $stmt->fetchAll(PDO::FETCH_ASSOC); // CSV generation $filename = "sales_report_" . date('Y-m-d') . ".csv"; header('Content-Type: text/csv'); header('Content-Disposition: attachment; filename="' . $filename . '"'); $output = fopen('php://output', 'w'); // Add BOM to support UTF-8 in Excel fputs($output, "\xEF\xBB\xBF"); // Header row fputcsv($output, ['Sale ID', 'Date', 'Total Amount', 'Payment Method', 'Items']); // Data rows foreach ($sales as $sale) { fputcsv($output, [ $sale['id'], $sale['sale_date'], number_format($sale['total_amount'], 2), $sale['payment_method'], $sale['items'] ]); } fclose($output); exit;