Вопрос или проблема
Адаптация существующего скрипта для преобразования 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;
}
?>
Объяснение изменений:
-
Переменная
tfootAdd
: Мы добавили новый флаг, который будет указывать на то, что текущая строка находится в диапазоне от 167 до 170. -
Блок
<tfoot>
: Когда мы находимся на 167 строке, мы открываем тег<tfoot>
, и на 170 строке закрываем этот тег. Все строки с 167 по 170 теперь оборачиваются в тег<tfoot>
. - Обработка строк: Мы добавили логику для обработки последних четырех строк отдельно, чтобы включить их в блок
<tfoot>
, и остальные строки продолжат добавляться в тело таблицы (<tbody>
).
Теперь ваш скрипт будет корректно добавлять последние четыре строки в блок <tfoot>
.