2012-03-28 7 views
1

Ich habe eine .csv-Datei mit "Code" und "Beschreibung". Ich möchte die .csv suchen und wenn es einen doppelten "Code" findet, ersetzen Sie die ganze Zeile.PHP fgetcsv() suchen und überschreiben Datei

dh. Datei von csv:

code   description 
STA-101  A great product 
STA-102  OK Product 

Diese sind dynamisch, so brauche ich eine if-Anweisung:

code   description 
STA-101  A great product 
STA-102  Terrible Product 

Wenn es mit etwas, das heißt "STA-102" ersetzen Beschreibung finden waren. Kann dies mit fgetcsv() getan werden?
Die unten funktioniert nicht, aber es ist alles weiß ich jetzt:

$row = 1; 
if (($handle = fopen("formTest.csv", "r")) !== FALSE) { 
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { 
     $num = count($data); 
     $row++; 
     for ($c=0; $c < $num; $c++) { 
      if ($data[$c] = "STA-102") { 
      $data[$c] = "OK Product"; } 
      echo $data[$c] . "<br />\n"; 
     } 

    } 
    fclose($handle); 
} 

Um meine Datei zu schreiben zu beginnen, ich habe:

$code = $_POST['CODE']; 
$description = $_POST['DESC']; 

if ($_POST) { 
    $csvData = $code . "," . $description. "\n"; 
    $fp = fopen("formTest.csv","ab"); 

    if($fp){ 
    fwrite($fp,$csvData); 
    fclose($fp); } 
} 

Wie kann ich das, was ich übernehmen habe oben mit der if-Anweisung den Code überschreiben, wenn es sein muss?

+0

Es ist "PHP", nicht "PhP" oder "Php" und sicherlich * nie * "pHp". – meagar

Antwort

2

In Ihrem Beispiel ist das Trennzeichen [Tab] (nicht ',').

while (($data = fgetcsv($handle, 1000, "\t")) !== FALSE) { 

Am beggining Put:

$res = ""; 

auch statt

for ($c=0; $c < $num; $c++) { 
    if ($data[$c] = "STA-102") { 
     $data[$c] = "OK Product"; } 
    } 
    echo $data[$c]; 

Ich glaube, Sie

wollen
if ($data[0] == "STA-102") { 
    $data[1] = "OK Product"; 
} 
$res .= implode('\t', $data) . "\n"; 

und nach fclose ($ handle);

$handle = fopen("formTest.csv", "w")); 
fwrite($handle, $res); 
fclose($handle); 
+0

Dies wird nur zum Echo. Wie kann ich ersetzen, was ich in der CSV-Datei an diesem Ort mit 'fwrite' habe? – ToddN

+0

Ich aktualisierte meine Antwort. –

+0

Danke, aber ich konnte es nicht zur Arbeit bringen. Ich habe meine Frage oben aktualisiert, um zu berücksichtigen, wie ich gerade in die Datei schreibe. – ToddN