Загрузка данных


<?php

$uploadDir = 'uploads/';
$error = '';
$tableData = [];

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    if (isset($_FILES['csv_file']) && $_FILES['csv_file']['error'] === UPLOAD_ERR_OK) {
        $fileTmpPath = $_FILES['csv_file']['tmp_name'];
        $fileName = $_FILES['csv_file']['name'];
        $fileExtension = strtolower(pathinfo($fileName, PATHINFO_EXTENSION));

        if ($fileExtension !== 'csv') {
            $error = 'Ошибка: Файл должен иметь расширение .csv';
        } else {
            if (!is_dir($uploadDir)) {
                mkdir($uploadDir, 0755, true);
            }

            $destPath = $uploadDir . basename($fileName);

            if (move_uploaded_file($fileTmpPath, $destPath)) {
                if (($handle = fopen($destPath, 'r')) !== false) {
                    while (($row = fgetcsv($handle, 1000, ",")) !== false) {
                        $tableData[] = $row;
                    }
                    fclose($handle);

                    if (empty($tableData)) {
                        $error = 'Ошибка: Не удалось распарсить CSV или файл пуст';
                    }
                } else {
                    $error = 'Ошибка при открытии сохраненного файла';
                }
            } else {
                $error = 'Ошибка при перемещении загруженного файла';
            }
        }
    } else {
        $error = 'Ошибка при загрузке файла на сервер';
    }
}

?>
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Загрузка CSV</title>
</head>
<body>

    <?php if (!empty($error)): ?>
        <span style="color: red;"><?php echo $error; ?></span><br><br>
    <?php endif; ?>

    <form method="POST" action="" enctype="multipart/form-data">
        Выберите файл CSV:<br>
        <input type="file" name="csv_file" accept=".csv"><br><br>
        <input type="submit" value="Загрузить и обработать">
    </form>

    <?php if (!empty($tableData)): ?>
        <h2>Данные из CSV-файла:</h2>
        <table border="1" cellpadding="5" cellspacing="0">
            <?php foreach ($tableData as $index => $row): ?>
                <?php if ($index === 0): ?>
                    <tr>
                        <?php foreach ($row as $cell): ?>
                            <th><?php echo htmlspecialchars($cell); ?></th>
                        <?php endforeach; ?>
                    </tr>
                <?php else: ?>
                    <tr>
                        <?php foreach ($row as $cell): ?>
                            <td><?php echo htmlspecialchars($cell); ?></td>
                        <?php endforeach; ?>
                    </tr>
                <?php endif; ?>
            <?php endforeach; ?>
        </table>
    <?php endif; ?>

</body>
</html>