Über Web, Tech, Games, Art,
Code & Design

17. März 2023

Aus einer Datenbank-Abfrage eine CSV-Datei exportieren

Mit folgendem Code ist es ganz einfach Daten aus einer Datenbank, sei es MySQL, SleekDB oder eine andere Datenquelle, in eine CSV-Datei zu exportieren. Ich setze dieses Skript z.B. häufig ein um Veranstaltungsanmeldungen zu exportieren und Kunden bereit zu stellen.

$today = date("Y-m-d");
$event = 'Veranstaltungsname';

header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=anmeldungen-'.$event.'-'.$today.'.csv'); // Dateiname der CSV

$output = fopen('php://output', 'w');
fputs($output, $bom =( chr(0xEF) . chr(0xBB) . chr(0xBF) )); // UFT-8 Excel-Fix
fputcsv($output, ['Name', 'E-Mail', 'Event'], ";");

$allitems = $currentstore->findBy(["event", "=", $event]);

foreach($allitems AS $item) {
    fputcsv($output, [$item['name'], $item['email'], $item['event']], ";");
} 

In diesem Beispiel wird aus einer SleekDB-Datenbank eine Teilnehmerliste exportiert. Wichtig sind hier die Angaben zum Header und die Funktion „fputcsv()“. Mit fputcsv werden die Daten innerhalb einer Schleife in die CSV geschrieben.

Damit das CSV auch in Microsoft Excel problemlos geöffnet werden kann, sollten Semikolons statt Kommata als Trennzeichen verwendet werden. Darüber hinaus wird mit der „BOM“-Sequenz sichergestellt, dass Excel die Daten auch als UTF-8 interpretiert.


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert