[GELÖST] MySQL Tabelle als .csv per php script runterladen?

Sn0w1

Freizeitschrauber(in)
[GELÖST] MySQL Tabelle als .csv per php script runterladen?

Moin zusammen (ich mal wieder, beschwerden ab sofort zu <<Painkiller>> weil ich hier soviel rumfrage :D)..


Also ich habe in meiner Datenbank jetzt genau eine Tabelle (siehe letzten Thread) und diese Tabelle kann man ja bekanntlich als sql, csv etc etc runterladen.

Nun möchte ich in den Adminbereich der homepage einen kleinen Text einbauen der eigentlich ein Link ist: z.B: Newsletterdaten herunterladen

Was soll der machen? Naja ganz klar, beim raufklicken den download der .csv datei dieser tabelle starten..

Wäre gut wnen einer wüsste wie des mit php funktioniert.. Das Projekt msus heute Nacht fertig werden und ich steh noch vor sooooooooooooooooooooooooooooooooooooooooooo einem Berg arbeit.. ://


Sn0w1
 
Zuletzt bearbeitet:
Das script, was das Kanonenfutter gezeigt hat, stellt das zum Download bereit.
Allerdings ist der Weg mit dem "jede Spalte einzeln eintragen" darin echt mies und auch so sehe ich ein paar Zeilen, die EIGENTLICH so nicht funktionieren können SOLLTEN.
Ich mach dir nachher zu Haus ma fix n Script hin, das dann die Zeilen mit variabel vielen Spalten exportiert, obwohl ich gerad erst vom neuen Münsteraner Codingmarathon (Büro) komme :D
 
AW: MySQL Tabelle als .csv per php script runterladen?

da keine php version vermerkt war hab ich einfach nach was simplen geschaut was irgendwie überall laufen sollte ... ansonsten kann man den array ja auch mit fputcsv ab 5.x direkt als csv formatieren :ugly:
 
AW: MySQL Tabelle als .csv per php script runterladen?

Naja wie auch immer ich hab erstmal fahrstunde -.- und morgen früh muss das sch**ß script stehen :S den quellcode vom aktuellen php script findet ihr ja in dem letzten thread den ich zum thema mysql gestellt hatte..


Sn0w1
 
AW: MySQL Tabelle als .csv per php script runterladen?

da keine php version vermerkt war hab ich einfach nach was simplen geschaut was irgendwie überall laufen sollte ... ansonsten kann man den array ja auch mit fputcsv ab 5.x direkt als csv formatieren :ugly:

Darum gings ja nicht :D Ging eher um die Spalten"limitierung" auf 3. Was ist denn, wenn die Tabelle im Ernstfall 100 Spalten hat, dann sieht er alt aus :D
Das automatisier ich mal eben jetzt. Bin ja endlich zu Haus :ugly:


edit: Einfach, aber wohl doch effizient ;)
Merke richtig, wie mir OOP fehlt :D
PHP:
<?php

	// Tabellenname
	define("select_table", "newsletter");
	// Trennzeichen
	define("csv_delimeter", ";");

	// Datenbankeinstellungen
	define("db_user", "root");
	define("db_password", "");
	define("db_server", "localhost");
	define("db_db_name", "datenbank");


	// ---- !!! ab hier nichts mehr verändern !!! --------------

	// Verbinden und Datenbank auswählen
	mysql_connect(db_server, db_user, db_password) or die(mysql_error());
	mysql_select_db(db_db_name) or die(mysql_error());

	// Abfrage
	$sql = "SELECT * "
		  ."FROM " . select_table . " "
		  ."LIMIT 65534 "; // Maximale Zeilen für 1 Dokument (+ Titelzeile)
		 
	// Abfrage ausführen
	$result = mysql_query($sql) or die(mysql_error());

	$result_row = array();
	// jede Zeile bearbeiten
	while ( $array_result = mysql_fetch_assoc($result) )
	{
		// keine Titelzeile vorhanden? (Array leer?)
		if ( empty($result_row) )
		{
			// erste Zeile initialisieren
			$result_row[] = "";
			$row_data = array();
			$index = count($result_row)-1; // Index holen
			// Schleife durchlaufen für die Titelzeile
			foreach ( array_keys($array_result) as $key_name )
			{
				$row_data[] .= "\"" . $key_name . "\"";
			}
			$result_row[$index] = implode(csv_delimeter, $row_data);
			unset($row_data);
		}
		// neue Zeile initialisieren
		$result_row[] = "";
		$row_data = array();
		$index = count($result_row)-1;
		foreach ( $array_result as $key => $value )
		{
			$row_data[] .= "\"" . $value . "\"";
		}
		$result_row[$index] = implode(csv_delimeter, $row_data);
		unset($row_data);
	}

	// Header setzen
	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');

	echo implode(PHP_EOL, $result_row);

?>
 
Zuletzt bearbeitet:
AW: MySQL Tabelle als .csv per php script runterladen?

Moin nochmal.. Danke für den super Code, der funktioniert fast perfekt.. Das einzige was im Moment noch ein wenig unschön ist ist folgendes:

Sn0w1.PNG

Er nimmt den Quellcode der Seite mit rüber.. Kann man das noch rausnehmen also konkret den code von Spacerat so ändenr das er nur den Inhalt vom main div nimmt? Das wäre es dann eigentlich auch schon, der rest ist einfach.. toP! :) Danke :))

Gruß
Torben aka Sn0w1
 
AW: MySQL Tabelle als .csv per php script runterladen?

Die Datei muss einfach aufgerufen werden. Wenn du also einen Link wie
HTML:
<a href="ordner/export_csv.php">Exportieren</a>
hast, reicht das vollkommen aus. Es muss keine Ausgabe davor :)
 
AW: MySQL Tabelle als .csv per php script runterladen?

Die Datei muss einfach aufgerufen werden. Wenn du also einen Link wie
HTML:
<a href="ordner/export_csv.php">Exportieren</a>
hast, reicht das vollkommen aus. Es muss keine Ausgabe davor :)


Ooooh ich könnt dir knutschen :)) Danke danke danke danke danke :)))
 
Zurück