こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

csvの内容を行単位で削除したい

getでidを渡し(id.php)、受け取った別のphp(sakujyo.php)ファイルで
そのidが含まれているリンクをクリック後
削除したいのですが
削除の方法がどのサイトをみても
私の理解力不足+知識不足で理解ができませんでした。

ロジックは一旦すべてのファイルを読み込んで
特定の行を削除後、再度上書きという流れは
わかったのですが、それをプログラムに書き直すと
どうしてもその通りできませんでした。

==csvの内容==
[id1],[ふりがな1],[なまえ1],[tel1]
[id2],[ふりがな2],[なまえ2],[tel2]
[id3],[ふりがな3],[なまえ3],[tel3]


<id.phpのソース>

<?PHP

$fp = fopen("data.csv", "r");

while ($data = fgetcsv($fp, 10000)) {

list($id, $furigana, $name, $tel) = $data;


echo "<a href=\"sakujyo.php?$id\">$id</a><p>";


}

?>

<sakujyo.phpのソース>
<?PHP

$id_url = $_GET['id'];

$fp = fopen("data.csv", "r");

while ($data = fgetcsv($fp, 10000)) {

list($id, $furigana, $name, $tel) = $data;

//ここから下がどうすればいいの悩んでいます。

if($id_url = $id){

$id = "";
$furigana = "";
$name = "";
$tel = "";

}

$fp = fopen("data.csv","a");

fwrite($fp, "$id, $furigana, $name, $tel\n");


}

?>

sakujyo.phpの
if($id_url = $id){
から下は変数を空にしているだけで
結果は行の削除ではなく,,,,を書き込んでいると思うのですが
それ以外に方法が思いつきませんでした。

このCSVファイルの行単位の削除方法をご存知の方がいらっしゃいましたら大変恐縮ですがご指導を頂戴できませんでしょうか?

宜しくお願いいたします。

投稿日時 - 2006-06-29 02:49:02

QNo.2244705

困ってます

質問者が選んだベストアンサー

>ロジックは一旦すべてのファイルを読み込んで特定の行を削除後、再度上書き
$id_url = $_GET['id'];
$fp = fopen("data.csv", "r");
while (($data = fgetcsv($fp, 1024))!==FALSE) {
list($id, $furigana, $name, $tel) = $data;
if($id_url != $id){
$wk[] = "$id,$furigana,$name,$tel\n";
}
}
fclose($fp);

$fp = fopen("data.csv","w");
foreach($wk as $data){
fwrite($fp, $data);
}
fclose($fp);

投稿日時 - 2006-06-29 03:54:18

お礼

仕事の都合で返事が遅れ大変申し訳ありません。

BLUEPIXY様のお陰で無事上記プログラムで削除が確認できました。
今回のプログラムを自分なりに何度も
復習し糧にしたいと考えています。
BLUEPIXY様本当にありがとうございました。

投稿日時 - 2006-07-04 03:05:15

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

flock する必要があるような気がします・・

投稿日時 - 2006-06-29 16:28:56

あなたにオススメの質問