Merge pull request #248 from Deutscher-Tischfussballbund/sportsmanager2-issue247

remove delimiter on csv-export
This commit is contained in:
MarvinF
2026-02-02 18:56:41 +01:00
committed by GitHub
@@ -112,27 +112,58 @@ function renderTemplate($template, $vars = []): string
);
}
function CSVfromArray($rows,$dateiname)
function exportCSV(array $rows, string $dateiname): void
{
$dateiname = bereinigterDateiname($dateiname);
ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind
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 = ";";
$header = "";
$header .= implode(';', array_keys($rows[0]));
foreach ($rows as $row) {
$data .= implode(';', $row)."\n";
if (empty($rows)) {
// Keine Daten → nichts exportieren
return;
}
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
@@ -5041,7 +5072,7 @@ function adminEditSpielverlegung(): void
$zeile++;
}
CSVfromArray($rows,"Spielverlegungen.csv");
exportCSV($rows,"Spielverlegungen.csv");
}
function adminSpielverlegungMailen(): void
@@ -12240,41 +12271,8 @@ function adminBegegnungenExportForm(): void
}
$dateiname .= ".csv";
$dateiname = bereinigterDateiname($dateiname);
ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind
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 = ";";
$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 .= $value;
$spalte++;
}
$data .= trim($line) . "\n";
}
echo $header . "\n" . utf8_decode($data);
die();
exportCSV($rows, $dateiname);
}
function adminEditTurnier(): void