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
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();
|
|
?>
|