Files
cdnPRO/innsi.pl/csv-convert.php
2024-10-25 16:01:25 +02:00

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";
?>