PHP 掲示板 編集機能の付け方

実現したいこと

PHPで簡易掲示板を作成しています。投稿、削除機能までは問題ないのですが、編集機能がうまくいかないです。
編集番号指定、新規ユーザー名、新規コメントを送信したら指定された番号の投稿を前の投稿と置き換えて表示したいです。

発生している問題・エラーメッセージ

編集機能がうまく動かない

### 該当のソースコード ```ここに言語名を入力 <!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="削除"><br> <!-- 編集フォーム --> <input type="number" name="edit" placeholder="編集番号"> <input type="text" name="password" placeholder="パスワード"> <input type="text" name="edit_user" placeholder="新規ユーザー名"> <input type="text" name="edit_comment" placeholder="新規コメント"> <input type="submit" name="edit_submit" value="編集"> </form> <?php $file_name = '1.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, "delete" . PHP_EOL); //追加 } else { fwrite($fp, $line . PHP_EOL); } } fclose($fp); echo "$delete を削除しました<br>"; } else { echo "削除番号を入力して下さい<br>"; } } // 編集 if(isset($_POST['edit_submit'])){ $edit = trim($_POST['edit']); $edit_user = trim($_POST['edit_user']); $edit_comment = trim($_POST['edit_comment']); if (file_exists($file_name)) { $fp = fopen($file_name, "a"); fwrite($fp, $line. PHP_EOL); fclose($fp); } elseif (!empty($edit) && !empty($edit_user) && !empty($edit_comment)) { $lines = file($file_name, FILE_IGNORE_NEW_LINES); $fp = fopen($file_name, "w"); foreach ($lines as $line) { $line_data = explode("<>", $line); $postnum = $line_data[0]; if ($postnum == $edit) { $editedData = $edit . "<>" . $edit_user . "<>" . $edit_comment . "<>" . date("Y/m/d H:i:s"); fwrite($fp, $editedData . PHP_EOL); } else { fwrite($fp, $line . PHP_EOL); } } fclose($fp); echo "$edit を編集しました<br>"; } else { echo "編集番号、新規ユーザー名、新規コメントを入力してください<br>"; } } // 投稿表示 if (file_exists($file_name)) { $post_list = file($file_name, FILE_IGNORE_NEW_LINES); if (!empty($post_list)){ foreach ($post_list as $post){ if($post != "delete"){ $elements = explode("<>", $post) ; foreach ($elements as $element) { echo $element . " "; } echo "<br>"; } else { $num = 1; } } } } ?> </body> </html>

コメントを投稿

0 コメント