91 lines
2.9 KiB
PHP
91 lines
2.9 KiB
PHP
<?php
|
|
function parseCSV($filename) {
|
|
// Sprawdzamy, czy plik istnieje
|
|
if (!file_exists($filename) || !is_readable($filename)) {
|
|
return false;
|
|
}
|
|
|
|
// Inicjalizujemy tablicę, do której zapiszemy dane
|
|
$data = [];
|
|
|
|
// Otwieramy plik do odczytu
|
|
if (($handle = fopen($filename, 'r')) !== false) {
|
|
// Pobieramy nagłówki
|
|
$header = fgetcsv($handle, 0, ';');
|
|
|
|
// Sprawdzamy, czy nagłówki zostały poprawnie wczytane
|
|
if ($header) {
|
|
// Odczytujemy pozostałe wiersze
|
|
while (($row = fgetcsv($handle, 0, ';')) !== false) {
|
|
// Podstawowe dane zamówienia
|
|
$orderData = array_combine($header, $row);
|
|
|
|
// Znajdujemy produkty w zamówieniu
|
|
for ($i = 1; $i <= 58; $i++) {
|
|
$product_id_key = "product_id $i";
|
|
$product_name_key = "product_name $i";
|
|
|
|
if (!empty($orderData[$product_id_key])) {
|
|
// Tworzymy nowy wpis dla każdego produktu
|
|
$singleProductOrder = [
|
|
'ORDER_ID' => $orderData['order_id'],
|
|
'EMAIL' => $orderData['email'],
|
|
'FIRST_NAME' => explode(' ', $orderData['name'], 2)[0],
|
|
'LAST_NAME' => isset(explode(' ', $orderData['name'], 2)[1]) ? explode(' ', $orderData['name'], 2)[1] : '',
|
|
'PRODUCT_ID' => $orderData[$product_id_key],
|
|
'PRODUCT_NAME' => $orderData[$product_name_key]
|
|
];
|
|
|
|
// Dodajemy wpis do danych
|
|
$data[] = $singleProductOrder;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// Zamykamy plik
|
|
fclose($handle);
|
|
}
|
|
|
|
// Zwracamy tablicę z danymi
|
|
return $data;
|
|
}
|
|
|
|
// Funkcja do zapisu danych do pliku CSV
|
|
function saveToCSV($filename, $data) {
|
|
// Otwieramy plik do zapisu
|
|
if (($handle = fopen($filename, 'w')) !== false) {
|
|
// Zapisujemy nagłówki
|
|
fputcsv($handle, ['ORDER_ID', 'EMAIL', 'FIRST_NAME', 'LAST_NAME', 'PRODUCT_ID', 'PRODUCT_NAME'], ';');
|
|
|
|
// Zapisujemy dane
|
|
foreach ($data as $row) {
|
|
fputcsv($handle, [
|
|
$row['ORDER_ID'],
|
|
$row['EMAIL'],
|
|
$row['FIRST_NAME'],
|
|
$row['LAST_NAME'],
|
|
$row['PRODUCT_ID'],
|
|
$row['PRODUCT_NAME']
|
|
], ';');
|
|
}
|
|
|
|
// Zamykamy plik
|
|
fclose($handle);
|
|
}
|
|
}
|
|
|
|
// Ścieżka do pliku CSV do wczytania
|
|
$filename = 'd3ab9b0322d52e4773ccbeb673779311.order.csv';
|
|
|
|
// Wywołujemy funkcję i zapisujemy wynik do zmiennej
|
|
$data = parseCSV($filename);
|
|
|
|
// Ścieżka do pliku CSV do zapisu
|
|
$outputFilename = 'orders.csv';
|
|
|
|
// Zapisujemy przetworzone dane do nowego pliku CSV
|
|
saveToCSV($outputFilename, $data);
|
|
|
|
echo "Dane zostały zapisane do pliku $outputFilename.\n";
|
|
?>
|