フォームにテキスト文を入力し、送信ボタンを押すと、下記にテキスト文とその入力(送信)日時が表示されるようにしたいのですが、どうしても最後に送信した時の時間が表示されてしまいます。課題に、「date関数を使う」という指定があるのですが、date関数を使用した状態で、どのように変更を加えればいいでしょうか?
<?php $errors=[]; $lines=[]; //読み込むファイルパス define('FILE_PATH','./logs.txt'); //ここから追記 $comment=''; if($_SERVER['REQUEST_METHOD']==='POST'){ //POSTされていれば一連の処理を行う //POSTされた文字列の受け取り if(isset($_POST['comment'])===TRUE){ $comment=$_POST['comment']; $date = new DateTime('now'); } //追記モードでファイルを開く $fp=fopen(FILE_PATH,'a'); if($fp !== FALSE) //ファイルを開くのに成功していれば //書き込むテキストを構築。ここでは末尾に改行を付加する。 $log = $comment . "\n"; //書き込み処理 $result=fwrite($fp,$log); if($result===FALSE){ //書き込みに失敗したらエラーメッセージ $errors[]='ファイル書き込み失敗:' .FILE_PATH; } //ファイルを閉じる fclose($fp); } $line = []; if(is_readable(FILE_PATH)===TRUE){ $fp = fopen(FILE_PATH,'r'); if($fp !== FALSE){ $text=fgets($fp); while($text !== FALSE){ $lines[]=$text; $text=fgets($fp); } fclose($fp); } }else{ $errors[]='ファイルがありません'; } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>発言ログ</title> </head> <body> <h1>発言ログ</h1> <form method="post"> <p>発言:<input type="text" name="comment"><input type="submit" name="submit" value="送信"> </p> </form> <?php foreach($errors as $error) { ?> <p><?php print $error; ?></p> <?php } ?> <?php foreach($lines as $line) { ?> <p><?php print $line; ?><?php echo $date -> format('Y年m月d日 H時i分s秒'); ?></p> <?php } ?> </body> </html>
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。