Ik heb een php script, welke ik wil automatiseren om CSV bestanden te exporteren naar een bepaalde directory. De data wordt uit een mysql tabel gehaald.
CSV bestanden worden nu netjes in een directory geschreven dus wat dat betreft gaat dat prima. Echter wil ik dat het CSV wordt gedeeld op basis van een order ID. Voor elk order ID moet dus een apart CSV bestand worden gemaakt.
Zoals:
12-09-2016-05-21_csvexport_1.CSV < data van order 1
12-09-2016-05-21_csvexport_2.CSV < data van order 2
Het script wil ik gaan automatiseren d.m.v. een cronjob. De te exporteren orders mogen d.m.v. een bepaalde datum range worden gefilterd. Bijv: wanneer het script wordt uitgevoerd, dan mag deze de orders van de laatste 2 dagen exporteren.
Het maakt daarbij niet uit als de CSV wordt overschreven.
Het script ziet er zo uit:
<?php
error_reporting(E_ALL ^ E_DEPRECATED);
$host = 'localhost';
$user = 'user';
$pass = 'pass';
$db = 'database';
$table = 'columns';
$file = 'csvexport';
$dir = 'csv';
$link = mysql_connect($host, $user, $pass) or die("Can not connect." . mysql_error());
mysql_select_db($db) or die("Can not connect.");
function escape_csv_value($value) {
$value = str_replace('"', '""', $value);
if ( preg_match( '/\\r|\\n|,|"/', $value ) ) {
return '"' . str_replace( '"', '""', $value ) . '"';
} else {
return $value;
}
}
$result = mysql_query("SHOW COLUMNS FROM ".$table."");
$i = 0;
if (mysql_num_rows($result) > 0) {
while ($row = mysql_fetch_assoc($result)) {
$csv_output .= $row['Field']."; ";
$i++;
}
}
$values = mysql_query("SELECT id_order, date, customer FROM orders");
while ($rowr = mysql_fetch_row($values)) {
for ($j=0;$j<$i;$j++) {
$csv_output .= escape_csv_value($rowr[$j]).';';
}
$csv_output .= "\n";
}
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: csv" . date("Y-m-d") . ".csv");
header( "Content-disposition: attachment; filename=".$filename.".csv");
$filename = date("d-m-Y-i-s_", time()) . $file.".csv";
print $csv_output;
file_put_contents($dir ."/".$filename, $csv_output);
}
?>
Ik hoop dat iemand mij hiermee kan helpen. Bij voorbaat dank