CSV erstellen - check - aber wie abspeichern?

Carrear

Erfahrenes Mitglied
Hi Leute,

mir wird die CSV Datei die ich erstelle logischerweise immer ausgegeben als Download. Ich möchte aber später einen Crobjob laufen lassen und die dann jedes mal in das gleich Verzeichnis speichern (darf auch überschreiben). Wie kann ich das machen?

PHP:
<?php
 
$host = 'localhost'; // MYSQL database host adress
$db = 'db'; // MYSQL database name
$user = 'db_user'; // Mysql Datbase user
$pass = 'passwort'; // Mysql Datbase password
 
$link = mysql_connect($host, $user, $pass);
mysql_select_db($db);
 
function exportMysqlToCsv($table,$filename = 'export.csv')
{
    $csv_terminated = "\n";
    $csv_separator = ";";
    $csv_enclosed = '"';
    $csv_escaped = "\\";
    $sql_query = "select * from users";
 
    $result = mysql_query($sql_query);
    $fields_cnt = mysql_num_fields($result);
 
    $schema_insert = '';
 
    for ($i = 0; $i < $fields_cnt; $i++)
    {
        $l = $csv_enclosed . str_replace($csv_enclosed, $csv_escaped . $csv_enclosed,
            stripslashes(mysql_field_name($result, $i))) . $csv_enclosed;
        $schema_insert .= $l;
        $schema_insert .= $csv_separator;
    } // end for
 
    $out = trim(substr($schema_insert, 0, -1));
    $out .= $csv_terminated;
 
    // Format the data
    while ($row = mysql_fetch_array($result))
    {
        $schema_insert = '';
        for ($j = 0; $j < $fields_cnt; $j++)
        {
            if ($row[$j] == '0' || $row[$j] != '')
            {
 
                if ($csv_enclosed == '')
                {
                    $schema_insert .= $row[$j];
                } else
                {
                    $schema_insert .= $csv_enclosed .
                    str_replace($csv_enclosed, $csv_escaped . $csv_enclosed, $row[$j]) . $csv_enclosed;
                }
            } else
            {
                $schema_insert .= '';
            }
 
            if ($j < $fields_cnt - 1)
            {
                $schema_insert .= $csv_separator;
            }
        } // end for
 
        $out .= $schema_insert;
        $out .= $csv_terminated;
    } // end while
 
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Content-Length: " . strlen($out));
    header('Content-Encoding: UTF-8');
    header('Content-type: text/csv; charset=UTF-8');
    header("Content-Disposition: attachment; filename=$filename");

    echo $out;
    exit;
 
} 
 
$table="users"; // this is the tablename that you want to export to csv from mysql.
 
exportMysqlToCsv($table);
 
?>
 
Zuletzt bearbeitet:
Ich habe mir die Frage mal wieder selbst beantwortet ^^ Aber ich poste es trotzdem mal, vielleicht hilft es ja zu gegebener Zeit mal jemandem.

Also anstatt das ganze Auszugeben (:D Herrgott, da kann man doch drauf kommen) schreibe ich das ganze einfach fwrite in eine datei :D

PHP:
	function leeren($file) {
		$datei = fopen($file,"w");
		fputs($datei,"");
		fclose($datei);
	}
	leeren($filename); // Datei die geleert werden soll.
	$fp = fopen($filename, "w+");
	fwrite($fp, $out);
	fclose($fp);
 

Neue Beiträge

Zurück