CSV Export Funktion mittels KI komplett neu erstellt.

This commit is contained in:
Jürgen Meyer
2026-01-27 13:02:51 +01:00
parent c21d20e532
commit 218436c065
@@ -112,28 +112,58 @@ function renderTemplate($template, $vars = []): string
); );
} }
function CSVfromArray($rows,$dateiname) function exportCSV(array $rows, string $dateiname): void
{ {
$dateiname = bereinigterDateiname($dateiname); if (empty($rows)) {
ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind // Keine Daten → nichts exportieren
Header("Content-Type: text/x-csv"); return;
Header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT');
Header('Content-Disposition: attachment; filename="' . $dateiname . '"');
Header("Pragma: no-cache");
$data = "";
$trennzeichen = ";";
$replace = ",";
$header = "";
$header .= implode($trennzeichen, array_keys($rows[0]));
foreach ($rows as $row) {
$data .= implode($trennzeichen, str_replace($trennzeichen,$replace,$row))."\n";
} }
echo $header . "\n" . utf8_decode(trim($data)); // Dateiname absichern
$dateiname = bereinigterDateiname($dateiname);
die(); // Output Buffer nur beenden, wenn aktiv
if (ob_get_level() > 0) {
ob_end_clean();
}
// CSV-Header für Browser
header('Content-Type: text/csv; charset=UTF-8');
header('Content-Disposition: attachment; filename="' . $dateiname . '"; filename*=UTF-8\'\'' . rawurlencode($dateiname));
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Pragma: no-cache');
header('Expires: 0');
// BOM für Excel
echo "\xEF\xBB\xBF";
// Stream öffnen
$out = fopen('php://output', 'w');
$delimiter = ';';
$enclosure = '"';
$escape = '\\';
// Header-Zeile: keys aus erstem Datensatz (Array oder stdClass)
$firstRow = $rows[0] instanceof stdClass ? (array) $rows[0] : $rows[0];
$header = array_keys($firstRow);
fputcsv($out, $header, $delimiter, $enclosure, $escape);
// Datenzeilen
foreach ($rows as $row) {
$rowArray = $row instanceof stdClass ? (array) $row : $row;
// Sicherstellen, dass alle Header-Spalten vorhanden sind
$line = [];
foreach ($header as $key) {
$line[] = $rowArray[$key] ?? '';
}
fputcsv($out, $line, $delimiter, $enclosure, $escape);
}
fclose($out);
exit;
} }
function adminUebersicht(): void function adminUebersicht(): void
@@ -5042,7 +5072,7 @@ function adminEditSpielverlegung(): void
$zeile++; $zeile++;
} }
CSVfromArray($rows,"Spielverlegungen.csv"); exportCSV($rows,"Spielverlegungen.csv");
} }
function adminSpielverlegungMailen(): void function adminSpielverlegungMailen(): void
@@ -12241,42 +12271,8 @@ function adminBegegnungenExportForm(): void
} }
$dateiname .= ".csv"; $dateiname .= ".csv";
$dateiname = bereinigterDateiname($dateiname);
ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind exportCSV($rows, $dateiname);
Header("Content-Type: text/x-csv");
Header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT');
Header('Content-Disposition: attachment; filename="' . $dateiname . '"');
Header("Pragma: no-cache");
$data = "";
$trennzeichen = ";";
$replace = ",";
$spalte = 0;
$header = "";
foreach ($rows[0] as $field => $value) {
if ($spalte != 0) {
$header .= $trennzeichen;
}
$header .= $field;
$spalte++;
}
foreach ($rows as $row) {
$line = '';
$spalte = 0;
foreach ($row as $value) {
if ($spalte != 0) {
$line .= $trennzeichen;
}
$line .= str_replace($trennzeichen,$replace,$value);
$spalte++;
}
$data .= trim($line) . "\n";
}
echo $header . "\n" . utf8_decode($data);
die();
} }
function adminEditTurnier(): void function adminEditTurnier(): void