[GastForen Programmierung/Entwicklung PHP und MySQL csv Export

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

csv Export

troll_13
Beiträge gesamt: 40

12. Feb 2012, 09:53
Beitrag # 1 von 5
Bewertung:
(5543 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Kann mir jemand helfen? Ich möchte von einer mysql DB ein csv erstellen. Leider bringe ich die Anführungszeichen "Vorname" nicht weg. Zudem möchte ich nach jedem Datensatz einen Zeilenumbruch einfügen. Da ich Anfänger bin schaffe ich beides nicht. Kann mir jemand helfen?
Code
<?php 

$DatabaseHost = "localhost";
$DatabaseUser = "root";
$DatabasePassword = "";
$Database = "db_test";
$Table = "tabelle1";

header('Content-Type: text/x-csv');
header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Content-Disposition: attachment; filename=download.csv');
header('Pragma: no-cache');

$DatabasePointer = mysql_connect($DatabaseHost, $DatabaseUser, $DatabasePassword);
mysql_select_db($Database, $DatabasePointer);

$ResultPointer = mysql_query("SELECT Name, Vorname, Telefonnummer FROM tabelle1");

for($i = 0, $Export = ""; $i < mysql_num_rows($ResultPointer); $i++)
{
$Daten = mysql_fetch_object($ResultPointer);

$Spalte[] = str_replace("\"", "\"\"", $Daten->Name);
$Spalte[] = str_replace("\"", "\"\"", $Daten->Vorname);
$Spalte[] = str_replace("\"", "\"\"", $Daten->Telefonnummer);

for($j = 0; $j < count($Spalte); $j++)
{
$Export .= "\"" . $Spalte[$j] . "\"";

if($j != count($Spalte)-1)
{
$Export .= ";";
}
}
$Export .= "\r\n";
$Spalte = "";
}

echo$Export;

?>

X

csv Export

Ollli
Beiträge gesamt: 458

12. Feb 2012, 10:34
Beitrag # 2 von 5
Beitrag ID: #489669
Bewertung:
(5529 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Troll,

du kannst str_replace auch auf Arrays anwenden. Außerdem gibt es die join()-Funktion, womit du dir die For-Schleife sparst.

Zu den Anführungszeichen: Normalerweise helfen umschließende Anführungszeichen, zusammenhängende Daten, welche evtl. ein Trennzeichen wie ein Komma oder Semikolon enthalten, weiterhin zusammen zu halten. Eher solltest du die Anführungszeichen innerhalb der einzelnen Spalten eliminieren und nicht verdoppeln (was sicher für Excel sein soll). So habe ich es zumindest erstmal in einen ungetesteten Vorschlag eingebaut:

Code
for($i = 0, $Export = ""; $i < mysql_num_rows($ResultPointer); $i++)  
{
$Daten = mysql_fetch_object($ResultPointer);

$Spalte = array($Daten->Name,$Daten->Vorname,$Daten->Telefonnummer);

// Eliminierung der Anführungszeichen innerhalb der Daten
$Spalte = str_replace('"', '', $Spalte);

// mit Anführungszeichen:
$Export .= "\"" . join('","',$Spalte) . "\"\r\n";

// ohne umschließende Anführungszeichen
// $Export .= join(',',$Spalte) . "\r\n";

$Spalte = null;
}


Viel Erfolg!


als Antwort auf: [#489668]

csv Export

troll_13
Beiträge gesamt: 40

12. Feb 2012, 11:09
Beitrag # 3 von 5
Beitrag ID: #489677
Bewertung:
(5512 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Ollli
Ganz herzlichen Dank - es funktioniert!!!
Hast du auch gerade noch den Tipp, wie ich es direkt als xls downloaden kann?
Gibt es noch einen code, dass das Downloadfenster geöffnet wird oder dass die Daten im Browser angezeigt werden?
Vielen Dank für deine Hilfe, ich bin total froh!
Gruss Troll


als Antwort auf: [#489669]

csv Export

ganesh
Beiträge gesamt: 1981

13. Feb 2012, 11:24
Beitrag # 4 von 5
Beitrag ID: #489755
Bewertung:
(5466 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Erstelle einfach ganz zuoberst in der PHP Datei einen sogenannten "header":

http://webcheatsheet.com/...v_files_with_php.php

Code
header("Content-type: application/vnd.ms-excel"); 
header("Content-Disposition: attachment;Filename=document_name.xls");


Mit den neueren MS-Office Versionen gibt's leider teilweise Warnmeldungen beim öffnen, aber das muss Dich bzw. Deinen Kunden nicht kümmern. Einfach wegklicken / bestätigen.


als Antwort auf: [#489677]

csv Export

troll_13
Beiträge gesamt: 40

13. Feb 2012, 13:06
Beitrag # 5 von 5
Beitrag ID: #489768
Bewertung:
(5447 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke. Funktioniert einwandfrei!
Jetzt habe ich nur noch ein kleines Problem, dass ich auch mit diversen Suchen nicht lösen kann (und leider kann ich nicht so gut englisch).
Ich möchte nun noch in die erste Zeile des Exports die Feldernamen hinzufügen. Aber nicht diejenigen der Datenbank, sondern eigene. Wie würde hier der Code heissen?
Vielen Dank für all eure Hilfe!


als Antwort auf: [#489755]
X