Zum Inhalt springen

per PHP eine CSV-Datei schreiben

Erstellt am 27. Oktober 2006 · Noch keine Antworten

Tags: Frage

Unbekannter Benutzer ·

Hallo Forum,

ich poste es jetz einfach mal hier, vielleicht hilft es ja wem weiter. Hat nix direkt mit Typo3 zu tun. Habe lange dran gehangen, aus einer mysql-DB per PHP eine CSV-Datei zur Weiterverarbeitung zu exportieren, inklusive Spaltenköpfe.

Ich weiss, mysql_num_fields ist veraltet.. klappt aber trotzdem 😉

//Spaltenköpfe ermitteln, Limit 1 weil ich hier erstmal nur die Spaltenköpfe brauche
$new_csv_koepfe = "SELECT * FROM tabelle WHERE bedingung LIMIT 1";
$erg_csv_koepfe = mysql_query($new_csv_koepfe);
while($row = mysql_fetch_array($erg_csv_koepfe)) {
// Anzahl der Felder ermitteln
$j = mysql_num_fields($erg_csv_koepfe);
for($i=0;$i<$j;$i++) {
// Name des aktuellen Feldes ermitteln und an text anhängen für erste Zeile
$headline = $headline.$hoch.mysql_field_name($erg_csv_koepfe,$i).$hoch.";";
}
		}
$headline = $headline."\n\r"; //Absatz
		
		//Body erzeugen
		$new_csv_inhalt = "SELECT * FROM tabelle WHERE bedingung";
		$erg_csv_inhalt = mysql_query($new_csv_inhalt);
		while($row2 = mysql_fetch_array($erg_csv_inhalt)) {
    		// Anzahl der Felder ermitteln
  			$j = mysql_num_fields($erg_csv_inhalt);
  			for($i=0;$i<$j;$i++) {
		    // Name des aktuellen Feldes ermitteln
		    $k = mysql_field_name($erg_csv_inhalt,$i);
		    // Dem Feldnamen einen Wert zuweisen
		    $$k = $row2[$k];
			$inhalt = $inhalt.$$k.";"; //inhalt des feldes in variable inhalt schreiben
    		}
		$inhalt=$inhalt."\n"; //Zeilenumbruch
		}
	$text=$headline.$inhalt;

Die Variable $text enthält nun die Daten für die CSV.
Über

$dateiname = "/opt/lampp/htdocs/ordnerX/$dateiname.csv"; // Name der Datei
		 $fp = fopen($dateiname , "a+"); // Datei öffnen, wenn nicht vorhanden dann wird die Datei erstellt.
		 fwrite($fp , $text); // Dateiinhalt in die Datei schreiben
		 fclose($fp); // Datei schließen

kann diese nun geschrieben werden.

Grüße
David