実現したいこと
phpで掲示板の削除機能を付けたいです。投稿番号を削除したらその投稿番号を飛ばして、次の投稿を投稿の投稿番号+1を新たな投稿番号にしたいです。
どのように修正したらよいのか教えていただきたいです。
よろしくお願いいたします。
発生している問題・エラーメッセージ
現在これらの投稿がされているとします 1 コメント 2 ユーザー名 3 コメント これから投稿番号2番を削除すると 1 コメント 3 コメント このように表示されます その後新たに投稿(コメント)をすると 1 コメント 3 コメント 3 コメント このように3が繰り返されます。 これを 1 3 4 としたいです
該当のソースコード
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>削除機能</title> </head> <body> <form action="" method="post"> <input type="text" name="user" value="ユーザー名"> <input type="text" name="comment" value="コメント"> <input type="submit" name="submit"><br> <input type="number" name = "delete" placeholder="削除対象番号"> <input type="submit" name= "delete_submit" value = "削除"> </form> <?php $file_name = 'file1.txt'; if(isset($_POST['submit'])){ $user = trim($_POST['user']); $comment = trim($_POST['comment']); if (!empty($user) && !empty($comment)) { $lines = file($file_name, FILE_IGNORE_NEW_LINES); $num = count($lines) +1; $currentDateTime = date("Y/m/d H:i:s"); $newData = $num. $user . "<>" . $comment . "<>" . $currentDateTime; $fp = fopen($file_name, "a"); fwrite($fp, $newData . PHP_EOL); fclose($fp); echo "保存しました. <br>"; }else { echo "入力してください<br>"; } } // 削除 if(isset($_POST["delete_submit"])){ $delete = $_POST["delete"]; if(!empty($delete)) { $lines = file($file_name,FILE_IGNORE_NEW_LINES); $fp = fopen( $file_name, "w"); foreach($lines as $index => $line){ $line_data = explode("<>", $line); $postnum = $index + 1; if ($postnum != $delete) { fwrite($fp,$line. PHP_EOL); } } fclose($fp); echo "$delete を削除しました<br>"; } else { echo "削除番号を入力して下さい<br>"; } } // 投稿表示 if (file_exists($file_name)) { $post_list = file($file_name, FILE_IGNORE_NEW_LINES); if (!empty($post_list)){ //$number = 1; foreach ($post_list as $post){ $elements = explode("<>", $post); // echo $number; // $number++; for($i = 0; $i < count($elements); $i++){ echo $elements[$i] ; } echo "<br>"; } } } ?> </body> </html>
0 コメント