PHP 更新 CSV - fput()

PHP Update CSV - fput()

我想打开一个包含以下条目的 csv 文件:

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

然后我想检查第 12 列 (Importiert) 中是否没有任何内容,并检查 importtime 是否小于 systemtime。如果两者都是真的,我想将此数据发送给 curl 做一些 post。完成后,我想在第 12 列中写一个时间戳。我用这个例子试过了:

$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");
};

CSV 格式的输出如下:

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

CSV 是平面文件,更新平面文件有两种方法:

  1. 追加到最后。
  2. 重写整个内容。

您想要#2,但您已经完成了#1。 #2 也相当低效,所以在像你这样的情况下,大多数人倾向于切换到数据库。

如果您需要不需要设置服务器的轻量级软件,总有 SQLite