Geschrieben von mace am 29.09.2005, 21:20

Tabelle aus MySQL in CSV-Dateien exportieren

Vorraussetzungen:

- MySQL Datenbank
- PHP fähiger Server
- Ein paar Kenntnisse in PHP/MySQL

Zum Anfang legt am besten eine Datei mit dem Namen export.php and und erstellt auf eurem Webspace einen Ordner mit dem CHMOD 777 und dem Namen CSV, damit darin nachher die CSV-Datei erstellt werden können.

Sobald ihr das habt, geht in den Editor und öffnet die export.php. Die ganze Prozedur soll nachher 3 Schritte haben:

1. Schritt : Einloggen in die DB
2. Schritt : Auswählen der zu exportierenden Datei
3. Schritt : Das Exportieren

Wir werden diese Schritte jeweils an die export.php dranhängen, und zwar bei Schritt 1 so:
export.php?mode=1 und bei den anderen Schritten halt genauso. Da es zu viel Quellcode kosten würde hab ich völlig auf jede Art von Style usw. geachtet.

Fangen wir in der Datei also mit Schritt 1 an:


<?
if($mode == 1) //Wenn wir bei Schritt 1 sind
{
?>
<form action="export.php?mode=2" method=post name=export>
<table>
<tr>
<td>
Host:
</td>
<td>
<input type=text name=host>
</td>
<td>
User:
</td>
<td>
<input type=text name=user>
</td>
<tr>
<tr>
<td>
Datenbank:
</td>
<td>
<input type=text name=datenbank>
</td>
<td>
Password:
</td>
<td>
<input type=password name=password>
</td>
<tr>
</table>
<br>
<input type=submit value="Mysql Verbinden">
</form>
<?
}

Hiermit haben wir die Grundlage zu Schritt 2 gemacht, nämlich ein einfaches Formular erstellt, wo man die Daten der MySQL DB eingeben kann.

Wenn jetzt jemand dieses macht, landet er bei Schritt 2. Also fügen wir unter der letzten Klammer Else If-Anweisung hinzu:


elseif($mode == 2) // Schritt 2 wird eingeleitet
{
$dbhost = $host;
$dbname = $datenbank;
$dbuser = $user;
$dbpass = $password;

//Verbindung zu DB herstellen
$db = @mysql_connect($dbhost,$dbuser,$dbpass);

if(!$db)
{
print("Keine Verbindung zur MySQl-Datenbank hergestellt. <a href='export.php'>Hier</a> geht es zurück.<br>");
}
else
{
print("Verbindung zur MySQl-Datenbank hergestellt als:<br>
Host: <b>".$host."</b><br>
User: <b>".$user."</b><br>");
}

$result = mysql_list_tables($dbname);
$i = 0;
?>
<form action="export.php?mode=3" method=post>
<input type=hidden name=host value=<? print("'".$host."'"); ?>>
<input type=hidden name=datenbank value=<? print("'".$datenbank."'"); ?>>
<input type=hidden name=user value=<? print("'".$user."'"); ?>>
<input type=hidden name=password value=<? print("'".$password."'"); ?>>
Bitte wählen Sie einen Tabellennamen:
<table style='font-size:11px'>
<tr>
<td>
<?
while ($i < mysql_num_rows ($result))
{
$tb_names[$i] = mysql_tablename ($result, $i);
echo "<input type='radio' name='SelectedTable' value='".$tb_names[$i]."'>".$tb_names[$i]."<br>";
$i++;
}
?>
</td>
</tr>
</table>
<br>
<input type=submit value="Auslesen">
</form>
<?
}

Hier wurde jetzt geguckt ob die eingegeben Daten korrekt waren und dann werden alle Tabellen der Datenbank angezeigt und zur Auswahl bereitgestellt. Dazu wird erst mit mysql_list_tables die Tabellen abgefragt und dann mit mysql_tablename angezeigt. Zusätzlich werden die MySQL-Daten in versteckten Input-Feldern versteckt.

Bei letztem und drittem Schritt kümmern wir uns jetzt um das Exportieren der gewünschten Tabelle. Dazu benutzten wir wieder eine Else If-Anweisung.


else if($mode == 3) // Bei Schritt 3
{
$dbhost = $host;
$dbname = $datenbank;
$dbuser = $user;
$dbpass = $password;

//Verbindung zu DB herstellen
$db = mysql_connect($dbhost,$dbuser,$dbpass);
global $db,$dbname;
$rs = mysql($dbname,"SELECT * FROM ".$SelectedTable,$db);
if(empty($rs))
{
print("<font color=red>Tabellenname nicht vorhanden</font>");
die;
}
$max = 11;
for ($i=0;$i <= $max;$i++)
{
$filename .= chr(rand(97,122));
}
$handle=fopen("CSV/".$filename.".csv", "wb");

while($row=mysql_fetch_array($rs))
{
$data="";
foreach ($row as $key => $value)
{
if (is_numeric($key))
{
$a=rawurlencode($value);
$a=str_replace("%0D%0A","",$a);
$a=rawurldecode($a);
$a=str_replace(";","-",$a);
$data.=$a.";";
}
}
fwrite($handle, $data."\n");
}
fclose($handle);
print("
Download der .csv Datei: <a href='CSV/".$filename.".csv' Download</a>");
}
?>

In dem letzten Schritt werden die Daten aus der Tabelle jetzt ausgelesen. Dabei wird Zeile für Zeile, Spalte für Spalte vorgegangen. Dazu wird die while-Schleife und die foreach-Schleife genutzt.

Natürlich kann man daraus noch sehr viel mehr machen, zum Beispiel das man mehere Tabelle auf einmal exportiert.

Soweit aber erstmal von mir..

Lob&Kritik an info@mannic.de

Bewertung Anzahl
6
100,0 %
1 Bewertungen