dポイントプレゼントキャンペーン実施中!

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

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

A 回答 (2件)

>ロジックは一旦すべてのファイルを読み込んで特定の行を削除後、再度上書き


$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);
    • good
    • 0
この回答へのお礼

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

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

お礼日時:2006/07/04 03:05

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

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!