Navigation
 Startseite
 Fachbücher
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog‑Verzeichnis

Partner
 Sprüche Treff

Artfiles.de
Bietet Serviceorientierte Internetdienstleistungen...
https://www.Artfiles.de
Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains und...
https://www.Hosterplus.de
 
 
 

Mysql Export zu einer CSV Datei mit PHP

Sie befinden sich: Home > Php Tutorial > Mysql Export zu einer CSV D...

Mysql Export zu einer CSV Datei mit PHP


Eintrag am:  11.12.2009
Hits / Besucher:  25933
Sprache:  Deutsch
Kategorie:  Einsteiger Tutorials...
Tutorial Art:  eigenes
Eingetragen von   schubertmedia schubertmedia
 
Beschreibung

In diesem Tutorial wird erklärt, wie Sie mit ein PHP Script auf einer MySQL Datenbank zugreifen können und entsprechend die Daten in einer CSV Datei ausgeben. Als Erstes müssen wir eine entsprechende Datenbank angelegt haben, die Datenbank könnte zum Beispiel so aussehen. Diese Daten importieren wir über den PHPMyAdmin in die entsprechende MySQL Datenbank. In unserem Beispiel haben wir, eine Kundentabelle mit Adressdaten.

SQL Befehl für Datenbank:

CREATE TABLE IF NOT EXISTS `kunden` (

`id` int(11) NOT NULL AUTO_INCREMENT,
`vorname` varchar(255) NOT NULL,
`nachname` varchar(255) NOT NULL,
`strasse` varchar(255) NOT NULL,
`hausnummer` varchar(10) NOT NULL,
`plz` varchar(10) NOT NULL,
`ort` varchar(10) NOT NULL,
`land` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE = MyISAM DEFAULT CHARSET = latin1
AUTO_INCREMENT = 3 ;

--
-- Daten für Tabelle `kunden`
--

INSERT INTO `kunden` (`id`, `vorname`,
`nachname`, `strasse`, `hausnummer`, `plz`,
`ort`, `land`, `email`) VALUES
(1, 'Nico', 'Schubert', 'Klostegasse', '10',
'07318', 'Saalfeld', 'Deutschland',
'info@schubertmedia.de'),
(2, 'Max', 'Mustermann', 'Musterstrasse', '1',
'11111', 'Musterhaus', 'Musterland',
'max.mustermann@musterhausen.de');



Nachdem wir unsere MySQL-Datenbank angelegt haben, geht es nun mit PHP Script weiter. Nachfolgend finden Sie das entsprechende PHP-Script.

Code des PHP Script:

<?php

/*
* Created on 11.12.2009 by Nico Schubert
*/
/*
* Der Host von ihrer MySQL Datenbank
*/
$db_host = 'localhost';
/*
* Username des MySQL Benutzers
*/
$db_user = 'root';
/*
* Das Passwort des MySQL Benutzers
*/
$db_passwort = '';
/*
* Name der Datenbank
*/
$db_datenbank = 'mysql_to_csv';
/*
* Tabellennamen, die abgefragt werden soll
*/
$db_tabelle = 'kunden';
/*
* Deklaration von benutzten Variablen
*/
$ausgabe = '';
$suche = array('"', ';');
$ersetzen = array("'", " ");
/*
* Aufbau der MySQL Verbindung
*/
$link = @mysqli_connect($db_host, $db_user,
$db_passwort, $db_datenbank);
if (!$link) {
die('Es konnte keine Verbindung hergestellt werden zur MySQL Datenbank. MySQL Fehler: ' . mysqli_connect_error());
}
/*
* Escaping für die Variablen, um SQL-Injection zu verhindern
*/
$db_tabelle = mysqli_real_escape_string($link, $db_tabelle);
/*
* Abfrage zusammenstellen von der Tabelle. In
unserem Fall verwenden wir ein Stern,
damit alle Felder ausgegeben werden.
Anschließend wird die Abfrage in der
Variable $sql_select gespeichert.
*/
$sql_select = "SELECT * FROM `" . $db_tabelle . "`";
/*
* Mit den PHP Befehl mysqli_query() stellen
wir unserer Abfrage an die Tabelle.
*/
$query = @mysqli_query($link, $sql_select) or
die('Mysql Fehler:' . mysqli_error($link));
/**
* Mit dem Befehl mysqli_num_rows() ermitteln
* wir die Anzahl der betroffenen
* Datensätze, anschließend prüfen wir mit
* einer IF-Anweisung ob die Anzahl der
* betroffenen Datensätze größer als Null ist.
*/
if (@mysqli_num_rows($query) != 0) {
/**
* Wenn wir Datensätze in unserem Abfrage
* haben, führen wir eine while
* Schleife aus und speichern ein Array
* in der Variable $daten
*/
while ($daten = mysqli_fetch_assoc($query)) {
/**
* Nun prüfen wir die Variable $daten
* ob in dieser ein Array enthalten ist.
*/
if (is_array($daten) == true) {
/**
* Wenn in der Variable $daten ein
* Array enthalten ist laufen
* wir mit einer so genannten
* foreach Schleife das Array durch.
*/
foreach ($daten as $key => $value) {
/**
* Nun speichern wir in der
* Variable $ausgabe unsere
* gefundenen Spalten.
* Bevor wir die Daten
* entsprechend unserer
* Zeichenkette anhängen,
* prüfen wir die Daten ob
* in diesen Felder " oder
* ; enthalten ist und
* ersetzen die mit der PHP
* Funktion str_replace()
*/
$ausgabe .=
'".str_replace($suche,
$ersetzen,
$daten[$key]).";';
}
}
/**
* Wenn ein neuer Datensatz
* abgearbeitet wird, speichern wir
* in der Variable $ausgabe einen
* Zeilenumbruch
*/
$ausgabe .= "\n";
}
} else {
/**
* Sollten wir keine Datensätze finden,
* speichern der in der Variable
* $ausgabe eine Ausgabe, dass keine
* Datensätze gefunden wurden.
*/
$ausgabe .= "Es sind keine Daten in der
Tabelle: ".$db_tabelle." vorhanden!";
}
/**
* Mit der PHP Funktion headers_sent() prüfen
* wir ob, eine Ausgabe an den Browser
* bereits gesendet wurde.
*/
if (!headers_sent()) {
/**
* Wenn noch keine Ausgabe an den Browser
* gesendet wurde, geben wir als
* Dateityp text/csv ein mit den PHP
* Befehl header()
*/
header("Content-type: text/csv");
/**
* Expires greifen wir auf den Cache vom
* Browser zu und definieren das
* Ablaufdatum der Datei.
*/
header('Expires: ' . gmdate('D, d M Y
H:i:s') . ' GMT');
/**
* Mit Content-Disposition: attachment;
* filename=download.csv definieren wir
* einen vordefinierten Dateinamen, der
* zum Download angeboten wird
*/
header('Content-Disposition: attachment;
filename=download.csv');
/**
* Zusätzlich übergeben wir mit Pragma:
* no-cache den Browser, dass er die
* Dateien nicht in den Cache speichern
* soll.
*/
header('Pragma: no-cache');
}
/**
* Nun geben wir unsere gespeicherte Variable
* $ausgabe mit dem Echobefehl aus.
*/
echo $ausgabe;
?>

Erklärung: 

Dieses PHP-Script ist komplett lauffähig, um dies zu verwenden, müssen sie die MySQL Datenbankdaten anpassen und auf ihren Server speichern. Nachdem sie das Script über ihren Browser aufrufen, wird automatisch der Download von der CSV Datei beginnen.

Was macht dies im Detail?

Zunächst werden Variablen definiert, die für die Verbindung zur MySQL-Datenbank erforderlich sind. Diese Variablen umfassen den Hostnamen der Datenbank ($db_host), den Benutzernamen ($db_user), das Passwort ($db_passwort) und den Namen der Datenbank ($db_datenbank).

Anschließend wird versucht, eine Verbindung zur MySQL-Datenbank herzustellen. Sollte dies fehlschlagen, wird eine Fehlermeldung ausgegeben, die den Grund des Fehlers angibt, und das Skript wird beendet.

Die Variable $db_tabelle wird mit mysqli_real_escape_string() escaped, um potenzielle SQL-Injection-Angriffe zu verhindern. Dieser Schritt ist wichtig, um die Sicherheit der Abfrage zu gewährleisten.

Daraufhin wird eine SQL-Abfrage erstellt, um alle Daten aus der angegebenen Tabelle abzurufen. Diese Abfrage wird dann mit mysqli_query() an die MySQL-Datenbank gesendet. Sollte dabei ein Fehler auftreten, wird eine entsprechende Fehlermeldung ausgegeben und das Skript wird beendet.

Anhand der Anzahl der betroffenen Datensätze wird überprüft, ob Daten vorhanden sind. Wenn Datensätze gefunden werden, wird eine Schleife gestartet, um die Datensätze abzurufen und in das CSV-Format zu konvertieren.

Für jeden Datensatz werden die Werte der einzelnen Spalten durchlaufen und in eine Variable namens $ausgabe geschrieben. Dabei werden spezielle Zeichen wie Anführungszeichen und Semikolons mit str_replace() ersetzt, um sicherzustellen, dass die CSV-Datei korrekt formatiert ist.

Nachdem alle Datensätze verarbeitet wurden, wird die Variable $ausgabe um einen Zeilenumbruch erweitert.

Falls keine Datensätze gefunden werden, wird eine entsprechende Meldung in die Variable $ausgabe geschrieben.

Schließlich werden HTTP-Header gesetzt, um dem Browser mitzuteilen, dass es sich um eine CSV-Datei handelt, und um den Download der Datei anzufordern. Dabei werden der Dateityp, das Ablaufdatum, der Dateiname und die Anweisung, die Datei nicht im Cache zu speichern, definiert.

Abschließend wird der Inhalt der CSV-Datei mit echo ausgegeben, sodass der Benutzer die Datei herunterladen kann.

Wenn Sie noch Fragen zu diesem Tutorial haben, so nutzen Sie bitte unser Forum.

 

 

Tags:

 

Artikel hinzufügen bei:
         
Bücherregal mit drei Büchern: 'PHP 4 - Grundlagen und Profiwissen' von Hanser Verlag, 'Webdesign in a Nutshell' von O'Reilly Verlag, und 'Webgestaltung' von Galileo Computing.