prepare($sql); $stmt->execute($ids); $orders = $stmt->fetchAll(PDO::FETCH_ASSOC); // Ustawienia nagłówków dla przeglądarki, by wymusić pobieranie pliku header('Content-Type: text/csv; charset=utf-8'); header('Content-Disposition: attachment; filename=zamowienia_' . date('Ymd_Hi') . '.csv'); // Wymuszenie BOM (dzięki temu Excel od razu poprawnie przeczyta polskie znaki w UTF-8) echo "\xEF\xBB\xBF"; $output = fopen('php://output', 'w'); // Zapisanie nagłówków kolumn (zwróć uwagę na średniki, które lubi polski Excel) fputcsv($output, ['ID', 'Produkt', 'Part Number', 'Ilosc', 'Miejsce zakupu', 'Cena szt.', 'Data dostawy', 'Odbiorca', 'Adres dostawy', 'Status', 'Notatki'], ';'); // Zapisywanie danych foreach ($orders as $o) { fputcsv($output, [ $o['id'], sanitizeCsvCell($o['product_name']), sanitizeCsvCell($o['part_number']), $o['quantity'], sanitizeCsvCell($o['purchase_place']), number_format($o['price_per_unit'], 2, ',', ''), // Cena z przecinkiem dla Excela sanitizeCsvCell($o['delivery_date']), sanitizeCsvCell($o['recipient']), sanitizeCsvCell($o['delivery_address']), sanitizeCsvCell($o['status']), sanitizeCsvCell($o['notes']) ], ';'); } fclose($output); exit(); } // Jeśli ktoś wszedł tu bezpośrednio lub nic nie zaznaczył, wracamy do indexu header('Location: index.php'); exit(); ?>