送信されたすべての電子メールをパイプ区切りの csv ファイルに投稿するフォームメール スクリプト用の php スクリプトを作成しています。次に、php 配列を介して csv ファイルを表示します。以下に示すように、リストの行の最後または22番目のフィールドであるリストのID /請求書番号を削除関数に渡すことで、ユーザーがエントリを削除できるようにする必要がありますが、csvファイル内のすべてを削除しています。その線だけではありません。これが私のコードです。請求書番号に渡されたIDを比較すると、一致する場合はその行を削除して残りを元に戻す必要がありますが、すべてのエントリが削除されています。
次のように修正しましたが、まだすべてのエントリが消去されています。
if ($_POST['action'] == "Delete")
{
$id = $_GET['id'];
$fptemp = fopen('data-temp.csv', "a+");
if (($handle = fopen($dataFile, "r")) !== FALSE)
{
while (($data= fgetcsv($handle)) !== FALSE)
{
if ($id != $data[22])
{
fputcsv($data);
}
}
fclose($handle);
fclose($fptemp);
unlink($dataFile);
rename('data-temp.csv',$dataFile);
}
}
だから私は私のcsvファイルに次のエントリを持っています
1346785585|Martha|Stewart|karen@someplace.com|555-444-2222|578 dude rd|dude|TN|57660|usa|Do it Yourself Cooking Book||389|12|||360|12|Credit Card|www.something.com||98.143.4.228|6c67b98
1346785588|Karen|b|karen@someplace.com|555-444-2222|578 dude rd|dude|TN|57660|usa|Do it Yourself WebSite||389|12|||360|12|Credit Card|www.something.com||98.143.4.228|464b4ec
行の最後のフィールドである請求書番号を見つけたいので、「464b4ec」を見つけて、で構成されるエントリ全体を削除するとします。
1346785588|Karen|b|karen@someplace.com|555-444-2222|578 dude rd|dude|TN|57660|usa|Do it Yourself WebSite||389|12|||360|12|Credit Card|www.something.com||98.143.4.228|464b4ec
他のすべてのエントリをそのままにしておきたいのですが、どうすればよいですか?