Адаптация существующего скрипта для преобразования CSV в HTML-таблицу, чтобы включить

Вопрос или проблема

Адаптация существующего скрипта для преобразования csv в HTML-таблицу с включением

Я использовал код ниже в течение нескольких лет, чтобы преобразовать выбранные данные из большого файла csv в таблицу html. Он выбирает конкретный диапазон строк и столбцов для представления.

Можно ли добавить команду, чтобы обернуть последние четыре выбранные строки в тег tfoot? В этом примере — строки 167-170. Похоже на то, как строка 147 обернута в thead.

<?php
        $row = 1;
        
        if(($handle = fopen("CSV/thesfpsquads23.csv", "r")) !== false) {
        
            $table1 = '<table id="exampleaugnov" class="sfpsquad augnov">';
        
            while (($data = fgetcsv($handle, 1000, ",")) !== false) {
        
                $table1Add = false;
                if($row >=147 && $row <= 170)
                    $table1Add = true;
        
                $num = count($data);
        
                if($row == 147) {
        
                    $table1 .= '<thead><tr>';
        
                    for($c = 0; $c <= 21; $c++) {
                        $value = empty($data[$c]) ? "0" : $data[$c];
        
                        $table1 .= '<th>'.$value.'</th>';
                    }
        
                    $table1 .= '</tr></thead><tbody>';
        
                } else {
        
                    if($table1Add) $table1 .= '<tr>';
        
                    for($c = 0; $c <= 21; $c++) {
                        $value = empty($data[$c]) ? "0" : $data[$c];
        
                        if($table1Add) $table1 .= '<td>'.$value.'</td>';
                    }
        
                    if($table1Add) $table1 .= '</tr>';
        
                }
        
                $row++;
        
            }
        
            if ($row >= 167 && $row <= 170) {
                $table1 .= '<tfoot><tr>';
                for ($c = 0; $c <= 21; $c++) {
                    $value = empty($data[$c]) ? "0" : $data[$c];
                    $table1 .= '<td>'.$value.'</td>';
                }
                $table1 .= '</tr></tfoot>';
            }
        
            $table1 .= '</tbody></table>';
            fclose($handle);
        
            echo $table1;
        }
        ?>

Ответ или решение

Конечно! Давайте адаптируем ваш скрипт для преобразования CSV-файла в HTML-таблицу, добавив блок <tfoot>, который будет обертывать последние четыре строки (строки 167-170). Вот как будет выглядеть обновленный код:

<?php
$row = 1;

if (($handle = fopen("CSV/thesfpsquads23.csv", "r")) !== false) {

    $table1 = '<table id="exampleaugnov" class="sfpsquad augnov">';

    while (($data = fgetcsv($handle, 1000, ",")) !== false) {

        $table1Add = false;
        $tfootAdd = false; // Флаг для определения блока <tfoot>

        if ($row >= 147 && $row <= 170) {
            $table1Add = true;
        }

        // Проверяем, если это последние четыре строки
        if ($row >= 167 && $row <= 170) {
            $tfootAdd = true;
        }

        $num = count($data);

        if ($row == 147) {
            $table1 .= '<thead><tr>';

            for ($c = 0; $c <= 21; $c++) {
                $value = empty($data[$c]) ? "0" : $data[$c];
                $table1 .= '<th>' . $value . '</th>';
            }

            $table1 .= '</tr></thead><tbody>';
        } else {
            if ($table1Add) {
                // Если это строки 167-170, добавляем их в tfoot
                if ($tfootAdd) {
                    if ($row == 167) {
                        $table1 .= '<tfoot>'; // открываем <tfoot> при первой строке, которую нужно добавить
                    }
                    $table1 .= '<tr>';
                    for ($c = 0; $c <= 21; $c++) {
                        $value = empty($data[$c]) ? "0" : $data[$c];
                        $table1 .= '<td>' . $value . '</td>';
                    }
                    $table1 .= '</tr>';
                    if ($row == 170) {
                        $table1 .= '</tfoot>'; // закрываем <tfoot> при последней строке
                    }
                } else {
                    $table1 .= '<tr>';
                    for ($c = 0; $c <= 21; $c++) {
                        $value = empty($data[$c]) ? "0" : $data[$c];
                        $table1 .= '<td>' . $value . '</td>';
                    }
                    $table1 .= '</tr>';
                }
            }
        }

        $row++;
    }

    $table1 .= '</tbody></table>';
    fclose($handle);

    echo $table1;
}
?>

Объяснение изменений:

  1. Переменная tfootAdd: Мы добавили новый флаг, который будет указывать на то, что текущая строка находится в диапазоне от 167 до 170.

  2. Блок <tfoot>: Когда мы находимся на 167 строке, мы открываем тег <tfoot>, и на 170 строке закрываем этот тег. Все строки с 167 по 170 теперь оборачиваются в тег <tfoot>.

  3. Обработка строк: Мы добавили логику для обработки последних четырех строк отдельно, чтобы включить их в блок <tfoot>, и остальные строки продолжат добавляться в тело таблицы (<tbody>).

Теперь ваш скрипт будет корректно добавлять последние четыре строки в блок <tfoot>.

Оцените материал
Добавить комментарий

Капча загружается...