phpで掲示板を作成しています.
内容としては,名前・コメントを入力し,投稿ボタンを押すと,名前・コメント・投稿日時が出力されるようにしたいです.
現在,以下の解決ができません.
・最初から投稿者・内容・日時の項目が2つずつ表示されている
・2回目以降を投稿すると前の投稿が書き換わってしまう
・投稿すると投稿者・内容・日時を保持しない(過去の投稿分は下,新規投稿を上のようにしたい)
おそらく,変数がごちゃごちゃになっていたりファイル操作がちゃんとできていないと思います.
ご教授よろしくお願い致します.
php
1<?php 2$filename = './test3.txt'; 3$name=''; 4$comment=''; 5$day=''; 6if($_SERVER['REQUEST_METHOD'] === 'POST'){ 7 $name=$_POST['name']; 8 $comment = $_POST['comment']; 9 $day=date('Y/m/d H:i:s'); 10 $name_comment=array($name=>$comment); 11 12 if(($fp = fopen($filename, 'a')) !== FALSE){ 13 if(fwrite($fp, $name) === FALSE){ 14 print 'ファイル書き込み失敗: ' . $filename; 15 } 16 fclose($fp); 17 } 18 if(($fp = fopen($filename, 'a')) !== FALSE){ 19 if(fwrite($fp, $comment) === FALSE){ 20 print 'ファイル書き込み失敗: ' . $filename; 21 } 22 fclose($fp); 23 } 24 if(($fp = fopen($filename, 'a')) !== FALSE){ 25 if(fwrite($fp, $day) === FALSE){ 26 print 'ファイル書き込み失敗: ' . $filename; 27 } 28 fclose($fp); 29 } 30 31} 32 33$data = array($name=>$comment); 34if(is_readable($filename) === TRUE){/ 35 if(($fp = fopen($filename, 'r')) !== FALSE){ 36 while(($tmp = fgets($fp)) !== FALSE){ 37 $data[] = htmlspecialchars($tmp, ENT_QUOTES, 'UTF-8'); 38 } 39 fclose($fp); 40 } 41}else{ 42 $data[] = 'ファイルがありません'; 43} 44 ?> 45 <!DOCTYPE html> 46 <html lang = "ja"> 47 <head> 48 <meta charset = "utf-8"> 49 <title>ファイル操作</title> 50 </head> 51 <body> 52 <h1>掲示板</h1> 53 <form method = "post"> 54 名前: <input type="text" name="name" value="" /><br /> 55 コメント: <textarea type = "text" name = "comment"></textarea> 56 <input type = "submit" name = "submit" value = "投稿"> 57 </form> 58 <p>-------------------------------</p> 59<?php var_dump($data); 60foreach ($data as $name_comment) { ?> 61 <p>投稿者: <?php print $name; ?><br />内容: <?php print $comment ?><br />日時: <?php print $day; ?></p> 62<?php } ?> 63</body> 64</html> 65
前の質問( https://teratail.com/questions/130430 )を解決されてから質問を立てた方が良いです。私も前の質問の回答に書きましたが、文法の基礎のところがかなり疎かになっているように見受けられます。前の質問のケアレスミス部分をきちんと理解して今回の対応に当たると、想定通りにいっていないと挙げられている3つの内、2つは容易に解決できそうに思います。
簡易掲示板を作りたいという目的はわかったけど、投稿データをファイル上でどう管理していきたいのかがわからない。仕様を明瞭化していないから曖昧なコーディングを誘発しているんじゃないかな。それに、まだゼロから描き上げるには理解レベルが足りていないように見受けられるので、ネット上に見つかるちゃんと動くソースコードを読んで理解するのをもうちょっと積み重ねたほうが力がつきそう。以上、余計なお世話でした。
回答1件
あなたの回答
tips
プレビュー