実現したいこと
ここに実現したいことを箇条書きで書いてください。
- phpで簡易掲示板に「削除機能」を付加し、指定された番号の投稿だけ削除できるようにしたい
前提・実現したいこと
PHPで簡易掲示板を作っています。
投稿に通し番号をつけて表示できる掲示板に「削除機能」を付加し、指定された番号の投稿だけブラウザとテキストファイルから削除できるようにしたいです。
しかし、削除ボタンを押しても削除されずエラーメッセージが表示されてしまいます。
発生している問題・エラーメッセージ
Warning: fwrite(): supplied resource is not a valid stream resource in /public_html/pre1.php on line 66 Warning: fclose(): supplied resource is not a valid stream resource in /public_html/pre1.php on line 67
該当のソースコード
PHP
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <title>pre1</title> 6</head> 7<body> 8 9 <form action="" method="post"> 10 <!--名前とコメントの入力フォーム--> 11 <input type="text" name="name" placeholder="名前"> 12 <input type="text" name="coment" placeholder="コメント"> 13 <input type="submit" name="submit"> 14 <!--削除対象番号のの入力フォーム--> 15 <input type="number" name="number" placeholder="削除対象番号"> 16 <input type="submit" name="delete" value="削除"> 17 </form> 18 19 <?php 20 error_reporting(E_ALL & ~E_NOTICE); 21 /*送信されたものを変数に代入*/ 22 $name = $_POST["name"]; 23 $coment = $_POST["coment"]; 24 $date = date("Y/m/d/H:i:s"); 25 $number = $_POST["number"]; 26 /*名前・コメント・日付をひとつの変数にまとめる*/ 27 $date1 = $name."<>".$coment."<>".$date; 28 29 /*テキストファイルに通し番号をつけた投稿を書き込む*/ 30 if(!empty($name) && !empty($coment)) { 31 $filename = "pre1.txt"; 32 $fp = fopen($filename,"r+"); 33 $count = 1; 34 while(fgets($fp) != false) { 35 $count ++; 36 } 37 fwrite($fp, $count."<>".$date1.PHP_EOL); 38 fclose($fp); 39 40 /*ブラウザに通し番号をつけた投稿を表示する*/ 41 if(file_exists($filename)){ 42 $lines = file($filename,FILE_IGNORE_NEW_LINES); 43 foreach($lines as $line){ 44 $rows = explode("<>",$line); 45 foreach($rows as $row){ 46 echo $row." " ; 47 } 48 echo "<br>"; 49 } 50 } 51 } 52 53 54 /* 削除操作*/ 55 if(!empty($number)) { 56 /*ファイルを読み込む*/ 57 $filename = "pre1.txt"; 58 $fp = fopen($filename,"r+"); 59 $lines = file($filename,FILE_IGNORE_NEW_LINES); 60 /*テキストファイルの中身を一行ずつ走査*/ 61 foreach($lines as $line){ 62 /*行を"<>"で区切り文字列ごとに分ける*/ 63 $rows = explode("<>",$line); 64 /*削除番号と行番号が一致しない場合はその行をテキストファイルに書き込む*/ 65 if($number != $count) { 66 fwrite($fp, $count."<>".$date1.PHP_EOL); 67 fclose($fp); 68 } 69 70 } 71 72 /*指定された行だけ削除されたテキストをブラウザに表示する*/ 73 if(file_exists($filename)){ 74 $lines = file($filename,FILE_IGNORE_NEW_LINES); 75 foreach($lines as $line){ 76 $rows = explode("<>",$line); 77 foreach($rows as $row){ 78 echo $row." " ; 79 } 80 echo "<br>"; 81 } 82 } 83 } 84 ?> 85</body> 86</html>
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。