In diesem Tutorial wird erklärt, wie man mit ein PHP Script auf einer MySQL Datenbank zugreifen kann 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 unseren MySQL Datenbank angelegt haben, geht es nun anders PHP Script. 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 = @mysql_connect($db_host, $db_user,
$db_passwort);
if (!$link) {
die('Es konnte keine Verbindung
hergestellt werden zur MySQL
Datenbank. MySQL Fehler: ' .
mysql_error());
}
$db_selected =
@mysql_select_db($db_datenbank, $link);
if (!$db_selected) {
die ('Es konnte die Tabelle:
'.$db_tabelle.' ausgewählt werden!
MySQL Fehler: ' . mysql_error());
}
/*
* 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 mysql_query() stellen
wir unserer Abfrage an die Tabelle.
*/
$query = @mysql_query($sql_select) or
die('Mysql Fehler:'.mysql_error());
/**
* Mit dem Befehl mysql_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 (@mysql_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 = mysql_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() == false) {
/**
* 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 den Echobefehl aus.
*/
echo $ausgabe;
?>
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. Wenn sie noch Fragen zu diesem Tutorial haben, so nutzen sie bitte unser Forum.