log.txt ファイル の中身が下の様になっていた場合、削除したい記事番号を選び削除キーを押したら
選んだ記事番号の記事を削除するにはどうしたらよいでしょうか?
◆ log.txtファイルの中身
1 あああ君 おはよう
・
3 かかか君 良い天気ですね
・
・
6 そそそ君 明日は晴れるでしょ
※ 記事番号($no) 名前($name) 内容($body)と配列がなっています。(全角の空白で区切ってます)
◆ 削除したい記事番号を選ぶ所のファイル名は 「file01.php」 としています。
「file01.php」では次ぎの様に削除キーを設定しています。
<table><tr><td>
<form name="form" action="file02.php" method="POST">
<input type="text" name="delkey" size="8">
<input name="Submits" type="submit" value="削除"></form>
</td></tr></table>
◆ 「file01.php」からのデーターの受け取りファイル名は 「file02.php」としています。
「file02.php」では次ぎの様にしてデーターを受け取る様にしています。
<?php
$delkey = $_REQUEST["delkey"];
$data = file("log.txt");
for($i=0; $i<sizeof($data); $i++){
list($no,$name,$body) = explode( " " , $data[$i]);
if($no == $delkey){
//・・・記事削除処理
}
}
・
・
・
?>
◆ 書込みは次ぎの様にしています。
$fp = fopen("log.txt","w");
$ndata = implode( " " , array($no,$name,$body."\n") );
fputs($fp,$ndata);
fclose($fp);
ここまではやってみましたが、ここから、どのような仕組みで選んだ記事番号の記事を削除したらよいのか分らないので教えて下さい?
また、記事削除の処理をした場合、ログファイルを元のと書きかえるいはどうしたらよいのでしょうか教えて下さい?
例えば、選んだ削除番号が「3」だった場合など・・・記事削除処理のところはどうしたらよいのでしょうか?
if の所では、記事番号($no)が選んだ削除したい記事番号($delkey)と等しいなら、・・・記事削除処理
と言う様にしています。
記事削除処理のところは、記事削除の仕組み仕方が分らないので空白となっています。
以上、出来れば詳しく教えて頂けると助かります。宜しくお願い致します。
No.1
- 回答日時:
あなたの記述を合わせただけです。
$delkey = $_REQUEST["delkey"];
$data = file("log.txt");
$fp = fopen("log.txt","w");
for($i=0; $i<sizeof($data); $i++){
if($no != $delkey){
$ndata = implode( " " , array($no,$name,$body."\n") );
fputs($fp,$ndata);
}
}
fclose($fp);
taketan_mydns_jpさんからの ANo.2 のご説明を参考に選んだ記事番号の記事を削除する事が出来ました!
私の望むご回答下さり感謝と共に本当に有り難う御座います。
すごく助かりました。とても嬉しく思っています。
また、私が何かPHPの事で質問すると想いますので、私の質問を見かけた際は、是非また宜しくお願い致します。
今回は、本当に的を得たご回答下さりまして有り難う御座いました。
No.2ベストアンサー
- 回答日時:
#1です。
微妙に誤りが。。。。$delkey = $_REQUEST["delkey"];
$data = file("log.txt");
$fp = fopen("log.txt","w");
for($i=0; $i<sizeof($data); $i++){
list($no,$name,$body) = explode( " " , $data[$i]);
if($no != $delkey){
fputs($fp,$data[$i]);
}
}
fclose($fp);
file()でメモリ上に全データを読込み、$no != $delkeyのとき、だけlog.txtに上書きします(一致する場合はスルー)。そうすれば結果的に削除された物は記録されません。
この回答への補足
この度は、ご回答下さり有り難う御座います。
上書きについては理解できました。
一つ質問なんですが、もし~の条件のところは…
「if($no != $delkey)」と「if($no == $delkey)」これは同じ意味なのでしょうか?
意味が違うとすれば「if($no != $delkey)」は、どう言う意味なのでしょうか?
もし宜しければ教えて頂けると助かります。
「if($no != $delkey)」の質問につきまして…
$no と $delkey が等しくないならば…と言う意味ですね。
改めて、上書きについては有り難う御座いました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Resource id #3 と表示されま...
-
CSVデータの行数カウントをした...
-
自動で番号を振りたい
-
ヒアドキュメントの中のfor文
-
行数が30万件ほどあるCSVから、...
-
CSVでアップロードしたデータの...
-
csvの内容を行単位で削除したい
-
phpの関数について質問です!
-
PHP SimpleXml unsetについて
-
変数の中に変数を
-
php Undefined variableエラー
-
プログラミングのPythonのnoteb...
-
プルダウンメニューにDBの内容...
-
file_existsでファイル名の部分...
-
PHPのmin関数、「1」以上の数値...
-
スカラーのベクトル微分
-
Perlで重複行を削除したい
-
PHPでこのコード自体に意味は無...
-
特定の文からメールアドレスの...
-
3つの連想配列を交互に代入し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数行のデータのPOST処理に関して
-
Resource id #3 と表示されま...
-
別ファイルの構造体の値を読み...
-
PHPでCSVの一部の行を編集したい
-
バイナリファイルの内容を、そ...
-
CSVファイルの最終行のデー...
-
ヒアドキュメントの中のfor文
-
stdClass Objectを連想配列のよ...
-
◆速い、ファイル読み込みは?
-
C言語でCSVファイルの行数を読...
-
phpでCSVファイルの中身を多次...
-
rubyで複数列のデータを一行に...
-
多次元配列の一次元目の最大値...
-
行数が30万件ほどあるCSVから、...
-
配列同士の足し算のループ処理
-
csvの内容を行単位で削除したい
-
FortranのOPEN文
-
CSVデータの行数カウントをした...
-
自動で番号を振りたい
-
While文を使って配列の中身を全...
おすすめ情報