前提・実現したいこと
PHPで簡易掲示板を作成しています。
削除フォームで受け取った数値と、配列の[0]が同じ時にその行を削除(その行だけ隠す)ようにしたいです。
発生している問題・エラーメッセージ
Warning: fwrite(): supplied resource is not a valid stream resource in /public_html/mission_3-3.php on line 49 Warning: fclose(): supplied resource is not a valid stream resource in /public_html/mission_3-3.php on line 50 mission_3-1.txt
該当のソースコード
PHP
1<!DOCTYPE html> 2<html lang="en" dir="ltr"> 3 <head> 4 <meta charset="utf-8"> 5 <title>簡易掲示板</title> 6 </head> 7 <body> 8 9 <form action="mission_3-3.php" method="post"> 10 <input type="text" name="name"> 11 <textarea name="comment" rows="8" cols="80"></textarea> 12 <button type = "submit">送信</button> 13 </form> 14 <br> 15 <form action="mission_3-3.php" method="post"> 16 <input type="text" name="delete"> 17 <button type = "submit">削除</button> 18 </form> 19 20 <?php 21 22 $date = date("Y/m/d H:i:s"); 23 $filename = "mission_3-1.txt"; 24 $count = count( file($filename) ); 25 $fp = fopen($filename, "a" ); 26 27 if(!empty($_POST["name"])&&!empty($_POST["comment"])){ 28 29 $namae = $_POST["name"]; 30 $message = $_POST["comment"]; 31 32 $toukou = $count."<>".$namae."<>".$message."<>".$date; 33 34 $keijiban = explode("<>",$toukou); 35 $string = implode(" ",$keijiban); 36 37 fwrite( $fp , "$string\r\n" ); 38 fclose( $fp ); 39 40 }elseif(!empty($_POST["delete"])){ 41 42 $delete = $_POST["delete"]; 43 $fp2 = fopen($filename,'w'); 44 45 ** for($i = 0; $i <= $count; $i++){ 46 $data2 = explode("<>",$filename); 47 48 if($data2[0] != $delete){ 49 fwrite( $fp2 , "$filename\r\n" ); 50 fclose( $fp2 ); 51 } 52 }** 53 } 54 $ret_array = file($filename); 55 foreach($ret_array as $aaa){ 56 echo $aaa; 57 echo "<br>"; 58 } 59 60 ?> 61 62 </body> 63 64</html> 65ボールドテキスト 66
試したこと
過去の質問は大体読み漁ったはずですが解決できませんでした。
配列を入れるとエラーが出てしまうことはわかったのですが、
を受け取るif文の変数を使うことができないので困りました。(グローバル変数というのも使ってみましたあうまくいきませんでした。)
エラーで調べたり試したことはありませんか?
また「PHP 簡易掲示板」はteratailにも幾度となく質問が挙げられています。
おおよそファイル名なども同じなので参考先(書籍でしょうか)も同じと思われますし、過去質問は参考になるのでは?(まず過去質問を参考にしてもらいたいです)
また、タイトルは要件を記載してください。
https://teratail.com/help/question-tips#questionTips3-1
今の内容だと要件(起きている問題、詰まっていることの詳細)が何も書かれていません。
かなりの質問を読み漁っても解決できなかったため質問させていただきました。
タイトルの変更に対する助言ありがとうございます。
質問は編集できますので適宜調整いただければと。
「質問を読み漁った」ことがわかるように、確認した質問のURL等も追記しておいていただければと思います(代表的なもので結構です)
編集フォームを探すのに時間がかかってしまいましたが、変更できました。
質問自体初めてで不慣れで申し訳ないです。
回答1件
あなたの回答
tips
プレビュー