In diesem PHP Tutorial werden die Daten durch ein Array simuliert. Normalerweise werden diese Daten und Werte aus einer Datenbank ausgelesen und in eine HTML-Tabelle eingetragen und dargestellt. Mit objektorientieren PHP ist es einfach, diese Daten mit nur 1 Klick zu exportieren und abzuspeichern.
Der Code ist kommentiert und dürfte somit selbsterklärend sein. Sollte sich dennoch Fragen ergeben, werde ich diese so rasch wie möglich beantworten.
// Beginn PHP-Code
session_start();
// Session Array setzen
if (!isset($_SESSION['daten'])) {
$_SESSION['daten'] = [];
}
/*
* Simuliertes Test-Array Object
* Daten kommen normalerweise aus Datenbank
*/
$daten = [
(object)['id' => 1,
'artikel_nr' => '001',
'produktname' => 'Kommode',
'preis' => 150,
'mwst' => 20],
(object)['id' => 2,
'artikel_nr' => '002',
'produktname' => 'Wohnzimmersofa',
'preis' => 699,
'mwst' => 20],
(object)['id' => 3,
'artikel_nr' => '003',
'produktname' => 'Küchentisch',
'preis' => 550,
'mwst' => 20],
];
// Daten in Session schreiben
$_SESSION['daten'] = $daten;
/*
* Ende PHP-Code
* CSV Download
* Link: ...href="csv_export.php">CSV-Export...
*/
// Beginn PHP Code
session_start();
// Temporäre Datei erstellen objektorientiert
$csv = new SplTempFileObject();
foreach($_SESSION['daten'] as $spalte) {
// Object extrahieren
$spalte = get_object_vars($spalte);
// Umlaute für Excel konvertieren
$spalte = mb_convert_encoding($spalte, "UTF-16LE", "UTF-8");
// CSV erstellen
$csv->fputcsv($spalte);
}
// Zeiger auf Anfang setzen
$csv->rewind();
// Headerinfo für Ausgabe
header("Content-Type: text/csv");
header('Content-Disposition: attachment; filename="daten.csv"');
// CSV ausgeben
$csv->fpassthru();
Das Dateiformat CSV ist eine einfache Textdatei und steht für "Comma-separated values". Das heißt, Werte werden mit einem Komma getrennt und können so in anderen Programmen (beispielsweise Office, Excel, XML, Datenbanken,...) verwendet werden.