Archivieren alter Einträge (csv)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Archivieren alter Einträge (csv)

    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.

    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($handlefilesize($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($handlejoin($daten[$i])."\n"); 
        
    fwrite($handlejoin($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); 

    ?>

  • #2
    bevor du zusätzliche Einträge hinzufügst, musst du den Inhalt der alten csv-Datei komplett auslesen, dann alten Inhalt (soeben ausgelesen) zuerst rein schreiben, anschließend neuen Inhalt dazu. (hab' deinen Code nicht gelesen, daher auch kein Korrekturvorschlag)

    Kommentar


    • #3
      hmm...

      also ich lese alle daten aus der 'reservierung.csv' aus und dann natürlich auch alle vom archiv...und dann schreibe ich rein....

      Kommentar

      Lädt...
      X