2016-03-25 9 views
0

Я хочу, чтобы открыть файл CSV со следующими записями:PHP Обновление 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 

Чем я хочу, чтобы проверить, нет ничего в колонке 12 (Importiert), и проверить, если importtime является < чем systemtime. Если оба являются истинными, я хочу отправить эти данные, чтобы сделать завиток, выполняя некоторые сообщения. Когда это будет сделано, я хочу, чтобы написать временную метку в колонке 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,[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" 

ответ

3

CSV плоский файл, и существует два способа обновления плоского файла:

  1. Добавить в конец.
  2. Перепишите все.

Вы хотите # 2, но вы сделали # 1. # 2 также довольно неэффективен, поэтому в таких случаях, как большинство людей, обычно переключается на базу данных.

Если вам нужно что-то легкое, что не требует установки сервера, всегда есть SQLite.

+0

Хорошо. Большое спасибо за эту информацию. Так что csv, конечно, не имеет смысла для моего дела. Я попытаюсь создать базу данных. – swapfile

 Смежные вопросы

  • Нет связанных вопросов^_^