2016-03-25 5 views
0

ich eine CSV-Datei mit folgenden Einträgen öffnen möchten:PHP-Update CSV - FPUT()

Firma,Anrede,Titel,Vorname,Nachname,Strasse,PLZ,Telefon,Fax,Email,Nachricht,CopyFlag,Importiert,Importdate,Importtime 
Testfirma1,Herr,Dr.,Vorname1,Name1,Strasse1,11111,12345567,123456,[email protected],nachricht1,1,,24.03.2016,22:00:00 
Testfirma2,Herr,Dr.,Vorname2,Name2,Strasse2,22222,22345567,223456,[email protected],nachricht2,1,,25.03.2016,22:00:00 
Testfirma3,Herr,Dr.,Vorname3,Name3,Strasse3,33333,32345567,323456,[email protected],nachricht3,1,,25.03.2016,22:00:00 
Testfirma4,Herr,Dr.,Vorname4,Name4,Strasse4,44444,42345567,423456,[email protected],nachricht4,1,,25.03.2016,22:00:00 

als ich überprüfen möchten, wenn es nichts in Spalte 12 (Importiert) und prüfen, ob die importtime < ist als die systemtime. Wenn beide wahr sind, möchte ich diese Daten an Curl senden, um etwas Post zu machen. Wenn dies geschehen ist, mag ich 12 einen Zeitstempel in der Spalte zu schreiben, habe ich versucht, es mit diesem Beispiel:

$fp = fopen("Testformular.csv", "r+"); 
$line = 0; 
while ($row = fgetcsv($fp)) { 
    if($line === 0){ 
     $line++; 
     continue;}; 
    $actual = date("d.m.Y - H:i:s", time()); 
    $csvtime= date("d.m.Y - H:i:s", strtotime($row[13]. $row[14])); 
    if (empty($row[12])){ 
     if ($actual > $csvtime){ 
      $output = ""; 
      $output .= 'tx_btsimplecontact_pi1[name]=' . urlencode(""); 
      $output .= '&tx_btsimplecontact_pi1[firma]=' . urlencode($row[0]); 
      $output .= '&tx_btsimplecontact_pi1[sex]=' . urlencode($row[1]); 
      $output .= '&tx_btsimplecontact_pi1[titel]=' . urlencode($row[2]); 
      $output .= '&tx_btsimplecontact_pi1[vorname]=' . urlencode($row[3]); 
      $output .= '&tx_btsimplecontact_pi1[nachname]=' . urlencode($row[4]); 
      $output .= '&tx_btsimplecontact_pi1[strasse]=' . urlencode($row[5]); 
      $output .= '&tx_btsimplecontact_pi1[plz_ort]=' . urlencode($row[6]); 
      $output .= '&tx_btsimplecontact_pi1[telefon]=' . urlencode($row[7]); 
      $output .= '&tx_btsimplecontact_pi1[fax]=' . urlencode($row[8]); 
      $output .= '&tx_btsimplecontact_pi1[email]=' . urlencode($row[9]); 
      $output .= '&tx_btsimplecontact_pi1[nachricht]=' . urlencode($row[10]); 
      $output .= '&tx_btsimplecontact_pi1[copy]=' . urlencode($row[11]); 
      $output .= '&submit=Abschicken'; 
      print_r ($row); 
      print ($output);   
      $row[12]= $actual;  
      print_r ($row); 
      fputcsv($fp,$row); 
      }; 
     }; 
curl ('http://www.post.html', "$output"); 
}; 

Die Ausgabe im CSV folgt:

Firma,Anrede,Titel,Vorname,Nachname,Strasse,PLZ,Telefon,Fax,Email,Nachricht,CopyFlag,Importiert,Importdate,Importtime 
Testfirma1,Herr,Dr.,Vorname1,Name1,Strasse1,11111,12345567,123456,[email protected],nachricht1,1,,24.03.2016,22:00:00 
Testfirma1,Herr,Dr.,Vorname1,Name1,Strasse1,11111,12345567,123456,[email protected],nachricht1,1,"25.03.2016 - 01:10:15",24.03.2016,22:00:00 
name3,Name3,Strasse3,33333,32345567,323456,[email protected],nachricht3,1,,25.03.2016,22:00:00 
name3,Name3,Strasse3,33333,32345567,323456,[email protected],nachricht3,1,,25.03.2016,22:00:00,"25.03.2016 - 01:10:16" 

Antwort

3

CSV eine flache Datei ist, und Es gibt zwei Möglichkeiten, eine flache Datei zu aktualisieren:

  1. An das Ende anhängen.
  2. Schreiben Sie das Ganze neu.

Sie wollen # 2, aber Sie haben # 1 getan. # 2 ist auch ziemlich ineffizient, daher neigen die meisten Leute in Fällen wie deiner dazu, zu einer Datenbank zu wechseln.

Wenn Sie etwas Leichtgewichtiges brauchen, das kein Einrichten eines Servers erfordert, gibt es immer SQLite.

+0

In Ordnung. Vielen Dank für diese Information. Also macht csv für meinen Fall natürlich keinen Sinn. Ich werde versuchen, eine Datenbank einzurichten. – swapfile

Verwandte Themen