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

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

ただいまの
回答率

90.62%

  • PHP

    19892questions

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

phpで簡易掲示板作成

解決済

回答 1

投稿

  • 評価
  • クリップ 1
  • VIEW 227

yuzumikan

score 21

phpで掲示板を作成しています.
内容としては,名前・コメントを入力し,投稿ボタンを押すと,名前・コメント・投稿日時が出力されるようにしたいです.

現在,以下の解決ができません.
・最初から投稿者・内容・日時の項目が2つずつ表示されている
・2回目以降を投稿すると前の投稿が書き換わってしまう
・投稿すると投稿者・内容・日時を保持しない(過去の投稿分は下,新規投稿を上のようにしたい)

おそらく,変数がごちゃごちゃになっていたりファイル操作がちゃんとできていないと思います.

ご教授よろしくお願い致します.

<?php
$filename = './test3.txt';
$name='';
$comment='';
$day='';
if($_SERVER['REQUEST_METHOD'] === 'POST'){
  $name=$_POST['name'];
  $comment = $_POST['comment'];
  $day=date('Y/m/d H:i:s');
  $name_comment=array($name=>$comment);

  if(($fp = fopen($filename, 'a')) !== FALSE){
    if(fwrite($fp, $name) === FALSE){
      print 'ファイル書き込み失敗: ' . $filename;
    }
    fclose($fp);
  }
  if(($fp = fopen($filename, 'a')) !== FALSE){
    if(fwrite($fp, $comment) === FALSE){
      print 'ファイル書き込み失敗: ' . $filename;
    }
    fclose($fp);
  }
  if(($fp = fopen($filename, 'a')) !== FALSE){
    if(fwrite($fp, $day) === FALSE){
      print 'ファイル書き込み失敗: ' . $filename;
    }
    fclose($fp);
  }

}

$data = array($name=>$comment);
if(is_readable($filename) === TRUE){/
  if(($fp = fopen($filename, 'r')) !== FALSE){
    while(($tmp = fgets($fp)) !== FALSE){
      $data[] = htmlspecialchars($tmp, ENT_QUOTES, 'UTF-8');
    }
    fclose($fp);
  }
}else{
  $data[] = 'ファイルがありません';
}
 ?>
 <!DOCTYPE html>
 <html lang = "ja">
 <head>
   <meta charset = "utf-8">
   <title>ファイル操作</title>
 </head>
 <body>
   <h1>掲示板</h1>
   <form method = "post">
     名前: <input type="text" name="name" value="" /><br />
     コメント: <textarea type = "text" name = "comment"></textarea>
     <input type = "submit" name = "submit" value = "投稿">
   </form>
   <p>-------------------------------</p>
<?php    var_dump($data);
foreach ($data as $name_comment) { ?>
  <p>投稿者: <?php print $name; ?><br />内容: <?php print $comment ?><br />日時: <?php print $day; ?></p>
<?php } ?>
</body>
</html>
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • mts10806

    2018/06/11 06:22

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

    キャンセル

  • m6u

    2018/06/11 12:01

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

    キャンセル

回答 1

check解決した方法

0

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/11 21:53

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

    キャンセル

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

  • ただいまの回答率 90.62%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    php初心者です。issetの使い方がよくわかりません。

    issetをつかって、名前とコメントを入力したときと、空白のときで、働くプログラムを変更したいのですが、やり方がよくわかりません。 該当のソースコード <form acti

  • 解決済

    PHP:パスワードが一致したときのみ、投稿の削除をする簡易掲示板

    パスワードが一致したときの条件式をプログラムに書いても反応しません。/ファイル消去/ブロックの6行目あたりにあるif文のandの右側の条件式です。この式で使われている$delDat

  • 解決済

    php 掲示板の消去機能

    ```php コード <?php ini_set('display_errors', 1); error_reporting(E_ALL); date_defa

  • 解決済

    PHPファイル送信

    phpでファイルのテキスト内に書いた内容を1行ずつbbb.textというファイルに保存して、ページの下に1行ずつ表示するプログラムを書くのですが、テキスト内の内容の変数$boxをど

  • 解決済

    php 簡易掲示板の編集

    実現したいこと 簡易掲示板について。 テキストと送信ボタンがある掲示版を扱います。 フォームを送信すると、別に用意したテキストファイルに内容が保存され、そこから読みだされた内

  • 解決済

    掲示板の作成においてリロードしたら同じ投稿がされるのを防ぎたい

    名前、タイトル、本文を投稿することができる掲示板を作成しました。投稿に関してはなんの問題もありません。しかし、投稿が成功したあとに更新ボタンをおすとおなじ投稿が投稿されてしまいます

  • 解決済

    一言掲示板作成中でのことです

    現在一言掲示板作成途中なのですが、名前とひとことを打って送信しても、ログのテキストファイルにも保存されず画面に表示もできていない状態です。 誰か分かる方いらっしゃいましたら、教えて

  • 解決済

    PHPのアンケートに於ける番号表記

    PHPでアンケートフォームを作成しているのですが、アンケートの投稿番号の表記がうまくいきません。 1行ごとに「{番号}<>{名前}<>{コメント}<>{投稿された時間}」と言う形で

同じタグがついた質問を見る

  • PHP

    19892questions

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