mirror of
https://github.com/Deutscher-Tischfussballbund/com_sportsmanager.git
synced 2026-06-10 06:27:52 +00:00
CSV Export Funktion mittels KI komplett neu erstellt.
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user