前提・実現したいこと
掲示板から指定した番号の投稿をテキストファイルからもブラウザからも削除させたい。
またexplode関数を用いて、ブラウザの表示には区切り文字("<>")を入れずに
【POST送信で「削除対象番号」を送信して、受信する際は、if文で「(新規)送信フォーム」と「削除フォーム」で処理を分岐させる】これを実現したいです
発生している問題・エラーメッセー
削除機能の実装をどのように行えば良いのか分からない。
該当のソースコード
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>mission_3-3</title> </head> <body> <form action ="" method="post"> <!--投稿の入力フォーム--> <input type ="text" name ="yourname" placeholder="名前"><br> <textarea name = "text" rows="5" cols="40">コメント記入</textarea> <input type ="submit" name="submit"><br> <!--消去の入力フォーム--> <input type ="text" name ="deletenumber" placeholder ="削除番号"><br> <input type ="submit" name ="delete" value="削除"> </form> <?php $filename = "mission_3-3.txt"; #中身が空では無いとき、入力 if(!empty($_POST["yourname"]) && (!empty($_POST["text"])) != ""){ if(isset($_POST["submit"])){ $name = $_POST["yourname"]; //名前 $comment = $_POST["text"]; //コメント $date = date("Y/m/d H;i;s"); $num = count(file($filename)); //ファイルデータの行数を数えて$numに代入 $num++; //投稿番号を取得する $str = $num."<>".$name."<>".$comment."<>".$date; $fp = fopen ($filename , "a") ; //ファイルを追記モードで開く fwrite($fp, $str.PHP_EOL);//全ての情報を得る fclose($fp); echo "書き込み成功!<br><br>"; $lines = file($filename,FILE_IGNORE_NEW_LINES); foreach($lines as $line){ $line = explode("<>",$line); echo $line[0].",".$line[1].",".$line[2].",".$line[3]."<br>" ; } } } //1. 削除対象番号を送信 //2. 削除対象番号を受信 //3. 受信した削除対象番号を変数に代入 //4. ファイルを開く //5. ファイルの中身を1行1要素として配列変数に代入する //6. ファイルの行数の数だけ繰り返し処理を行う //7. 処理の内容:区切り文字「<>」で分割 //8. 処理の内容:投稿番号の取得 //9. 処理の内容:投稿番号と削除対象番号が一致していない場合、書き込む //10. ファイルを閉じる if(isset($_POST["delete"])){ $delete = $_POST["deletenumber"]; $lines = file($filename,FILE_IGNORE_NEW_LINES); foreach($lines as $line){ $line = explode("<>",$line); $postnumber = $line[0]; var_dump($postnumber); if ($postnumber != $delete){ fwrite($fp , $lines . PHP_EOL); fclose($fp); } } ?> </body> </html>
試したこと
投稿フォームだけで実行すると機能する
補足情報
初心者で調べながら何日もやっていたのですが一向に先が見えそうにないので質問させて頂きました。ご教示頂けますと幸いです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/12 14:47
2021/07/13 00:17
2021/07/13 07:26
2021/07/13 07:45