2012-03-28 9 views
1

"code"と "description"を持つ.csvファイルがあります。私は.csvを検索し、重複した "コード"が見つかった場合は、行全体を置き換えます。PHP fgetcsv()を検索してファイルを上書きする

ie。それはつまり、何かを説明を置き換える "STA-102" を見つけるとしたら

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

:csvファイルの

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

これらは動的であるので、私は、if文を必要としています。 fgetcsv()を使用してこれを行うことはできますか?
は下記動作しませんが、そのすべて私が今知っている:

はそもそも私のファイルに書き込むためには
$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); 
} 

、私が持っている:

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

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

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

私が何を組み込むことができますどのようにコードが上書きされる必要がある場合は、上記のif文を使用してください。

+0

"Php"または "Php"ではなく "never" "pHp"ではなく "PHP"です。 – meagar

答えて

2

この例では、区切り記号は[tab]( '、'ではなく)です。 begginingプットで

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

:私はあなたが

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

とfcloseを($ハンドル)の後をしたいと思います

$res = ""; 

また代わりの

​​

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

これはそれをエコーするだけです。 'fwrite'を使って、その場所のcsvファイルにあるものをどのように置き換えることができますか? – ToddN

+0

私は自分の答えを更新しました。 –

+0

ありがとうございますが、私はそれを働かせることができませんでした。上記の質問を更新して、現在ファイルへの書き込み方法を組み込んでいます。 – ToddN

関連する問題