morgen,
ich habe folgendes Problem und zwar will ich alte einträge von meiner CSV datei löschen und diese in eine Archiv datei packen.
das löschen der einträge in meiner csv klappt aber das archivieren der alten einträge klappt nicht wirklich. denn er löscht mir meine alten einträge (die archiviert habe) mit den neuen der alten einträge( die jez noch dazu kommen müssten). und wenn nichts zu filtern gibt überschreibt er die archiv datei und es steht nix drin.
ich habe folgendes Problem und zwar will ich alte einträge von meiner CSV datei löschen und diese in eine Archiv datei packen.
das löschen der einträge in meiner csv klappt aber das archivieren der alten einträge klappt nicht wirklich. denn er löscht mir meine alten einträge (die archiviert habe) mit den neuen der alten einträge( die jez noch dazu kommen müssten). und wenn nichts zu filtern gibt überschreibt er die archiv datei und es steht nix drin.
PHP-Code:
<?php
include("fputcsv.php");
// EINLESEN DER CSV-DATEI
$file = 'csv/reservierung.csv';
$handle = fopen($file, 'r');
$daten = array();
$timestamps = array();
while(($data = fgetcsv($handle, filesize($file), '-')) !== false) {
$daten[] = $data;
$datum = explode('.', $data[2]);
$uhrz = explode(':', $data[4]);
$timestamps[] = mktime($uhrz[0], $uhrz[1], 0, $datum[1], $datum[0], $datum[2]);
}
fclose($handle);
//Einträge vom Archiv in Array packen
$archive = file('csv/archive.csv');
//Filtern der alten Einträge
$filter = false;
$jetzt = time();
$m = count($daten);
$tmp = tempnam('/csv', 'tmp.csv');
$handle = fopen($tmp, 'a');
for ($i =0; $i <= $m; $i++) {
if ($timestamps[$i] < $jetzt)
{ $filter = true;
fwrite($handle, join($daten[$i])."\n");
fwrite($handle, join($archive[$i]));
unset($daten[$i]);
}
}
fclose($handle);
if ($filter == true)
{
copy($tmp, 'csv/archive.csv');
unlink($tmp);
array_multisort($timestamps,SORT_ASC,$daten);
$tmp = tempnam('/csv', 'reservierung.csv');
$handle = fopen($tmp, 'a');
foreach ($daten as $zeile) {
fputcsv($handle, $zeile, '-');
}
fclose($handle);
copy($tmp, 'csv/reservierung.csv');
unlink($tmp);
}
else
unlink($tmp);
?>
Kommentar