You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

55 lines
1.8 KiB
PHP

<?php
require_once 'includes/db.php';
require_once 'includes/auth.php';
checkAuth();
if ($_SERVER['REQUEST_METHOD'] === 'POST' && !empty($_POST['order_ids'])) {
$ids = $_POST['order_ids'];
// Tworzenie znaków zapytania do zapytania SQL (np. ?, ?, ?)
$placeholders = str_repeat('?,', count($ids) - 1) . '?';
// Pobieranie zaznaczonych rekordów
$sql = "SELECT * FROM " . DB_PREFIX . "orders WHERE id IN ($placeholders) ORDER BY id DESC";
$stmt = $pdo->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'],
$o['product_name'],
$o['part_number'],
$o['quantity'],
$o['purchase_place'],
number_format($o['price_per_unit'], 2, ',', ''), // Cena z przecinkiem dla Excela
$o['delivery_date'],
$o['recipient'],
$o['delivery_address'],
$o['status'],
$o['notes']
], ';');
}
fclose($output);
exit();
}
// Jeśli ktoś wszedł tu bezpośrednio lub nic nie zaznaczył, wracamy do indexu
header('Location: index.php');
exit();
?>