質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

552閲覧

phpで簡易掲示板作成

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2018/06/10 17:10

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/06/10 21:22

前の質問( https://teratail.com/questions/130430 )を解決されてから質問を立てた方が良いです。私も前の質問の回答に書きましたが、文法の基礎のところがかなり疎かになっているように見受けられます。前の質問のケアレスミス部分をきちんと理解して今回の対応に当たると、想定通りにいっていないと挙げられている3つの内、2つは容易に解決できそうに思います。
退会済みユーザー

退会済みユーザー

2018/06/11 03:01

簡易掲示板を作りたいという目的はわかったけど、投稿データをファイル上でどう管理していきたいのかがわからない。仕様を明瞭化していないから曖昧なコーディングを誘発しているんじゃないかな。それに、まだゼロから描き上げるには理解レベルが足りていないように見受けられるので、ネット上に見つかるちゃんと動くソースコードを読んで理解するのをもうちょっと積み重ねたほうが力がつきそう。以上、余計なお世話でした。
guest

回答1

0

ベストアンサー

一晩おいて本日考え直したら完成しました.
大幅に書き換えたのですが,test3.txtに名前・コメント・日時を記録しつつ,ブラウザに表示するものを作成しました.

名前・コメント・日時を記録するために,以下のようにlog変数を作成しました.(昨日の質問の時点でこの書き方も理解していませんでした...)
$log = $name . "\t" . $comment . "\t" . $day . "\n ;

投稿2018/06/11 12:38

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/06/11 12:53

出来上がって動作するようになったソースを掲載すると、また何かアドバイスが付くかもしれませんよ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問