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

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

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

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

Q&A

5回答

4113閲覧

掲示板のコメントに日付を表示させたい

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

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

0グッド

0クリップ

投稿2018/10/09 01:35

編集2022/01/12 10:55

php

1 2<?php 3 4 5//var_dump($_POST); 6$err_msg1 = ""; 7$err_msg2 = ""; 8$message =""; 9$name = ( isset( $_POST["name"] ) === true ) ?$_POST["name"]: ""; 10$time = (ここ?) 11$comment = ( isset( $_POST["comment"] ) === true ) ? trim($_POST["comment"]) : ""; 12 13 14if ( isset($_POST["send"] ) === true ) { 15 if ( $name === "" ) $err_msg1 = " "; 16 17 18 if ( $comment === "" ) $err_msg2 = " "; 19 20 if( $err_msg1 === "" && $err_msg2 === "" ){ 21 $fp = fopen( "data.txt" ,"a" ); 22 fwrite( $fp , $name."\t" .$comment."\n");header('Location: ████.php') 23; 24 } 25 26} 27 28?> 29 30<?php 31$fp = fopen( "data.txt" ,"r" ); 32 33$dataArr= array(); 34while( $res = fgets( $fp)){ 35 $tmp = explode("\t",$res); 36 $arr = array( 37 "name"=>$tmp[0], 38 "comment"=>$tmp[1] 39 ); 40 $dataArr[]= $arr; 41} 42 43while( $res = fgets( $fp)){ 44 45 46} 47 48?>

コメント投稿日時表示のコードを入力してみたのですがエラーになったり表示が狂ったりで結局成功には至らなかったので日時表示コードは1度全部消しました。初心者なりにできることは全てやったつもりです。

<?php foreach( array_reverse($dataArr) as $data ):?> <p><span><?php echo $data["name"]; ?></span>:<span><?php echo $data["log"]; ?></span><br> <span><?php echo $data["comment"]; ?></span></p>

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2018/10/09 01:57

array_reverse のつかいかたがまちがえてるので前質問は解決してないんでは?
m.ts10806

2018/10/09 02:47

エラーが出ている場合は質問本文にコピペしてください。どのように表示されているかもコードだけでは判断できません。どのようにしたいか、想定の形は質問者さんしか知り得ないのでそこは要件として説明する必要があります。ただ、そのエラーをきちんと調べれば解決できるものなので、もう少し頑張ってみましょう。
退会済みユーザー

退会済みユーザー

2018/10/09 04:17

$dataArr= array_reverse(); のことですか? array に修正した所変化なしだったので間違えてるのはそこですかね… 前質問で教えて貰った通りにやってみたら逆順表示になりましたので大丈夫だと思います????
guest

回答5

0

何の日付か書かれてないのでなんとも言えませんが「コメントの投稿日時」なのであれば、コメントを保存する際にそのときの日時を保管しなければなりません。
現在はnameとcommentしか保存してませんよね。
ひとまずtime()で保存し、表示時にdate()で表示したいフォーマットにすると良いでしょう。
各機能についてはPHPマニュアル参照してください。

投稿2018/10/09 02:51

編集2018/10/09 02:51
m.ts10806

総合スコア80765

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

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

0

日付を表示するコードがまったくないからでは?

投稿2018/10/09 02:06

ssasaki

総合スコア1167

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

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

退会済みユーザー

退会済みユーザー

2018/10/09 07:10 編集

そのコードは調べたのですが質問にあるコードには合わないような内容でした。
guest

0

見た感じロックやクローズしていないので微妙。
テキストをcsv形式で読み書きするとデータ管理が簡単になるかもしれません
思い切ってDBで管理するとか選択肢はありませんか?

投稿2018/10/09 01:50

yambejp

総合スコア114572

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

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

退会済みユーザー

退会済みユーザー

2018/10/09 03:33

Tab Separated Variable TEXT は立派な Character Separated Variable TEXT (CSV)ですよ
yambejp

2018/10/09 03:54

> Character Separated Variable そうやってわざと質問者さんを混乱させるようなことを言うのはどうかと思いますが・・・
guest

0

理論は分かっても、コードにならないのだと思うので、コードの一部を改変する例をご提案します。
「//ココ」と書いた2行をご参考に。
(誤解のないように無関係な前後部分も引用しています)

php

1if ( isset($_POST["send"] ) === true ) { 2 if ( $name === "" ) $err_msg1 = " "; 3 4 5 if ( $comment === "" ) $err_msg2 = " "; 6 7 if( $err_msg1 === "" && $err_msg2 === "" ){ 8 $fp = fopen( "data.txt" ,"a" ); 9 fwrite( $fp , $name."\t" .$comment."\t".(new DateTime())->format('Y-m-d H:i:s')."\n");header('Location: ████.php'); //ココ 10 } 11 12} 13 14?> 15 16<?php 17$fp = fopen( "data.txt" ,"r" ); 18 19$dataArr= array(); 20while( $res = fgets( $fp)){ 21 $tmp = explode("\t",$res); 22 $arr = array( 23 "name"=>$tmp[0], 24 "comment"=>$tmp[1], 25 "log"=>$tmp[2], //ココ 26 ); 27 $dataArr[]= $arr; 28}

投稿2018/10/09 06:26

papinianus

総合スコア12705

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

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

papinianus

2018/10/09 06:28

タイムゾーンは考えていません。 一度にやると複雑になりすぎるので。
guest

0

PHPコード上での日付時刻表現、
データファイル上の日付時刻表現、
これらをうまく使う必要があります。

PHPコード上で現在日時を取得するのを
time()を使えばUnixタイムとして、
DateTime::__construct()を使えばDateTimeクラスのインスタンスとして取得できます。

Unixタイム値は整数値なので、
データファイル上に保存するのにそのまま文字列に変換して記録することも出来ますが、
HTMLとして出力する場合に数字のままだとわけがわからないので、
人間が読みやすい形式(例えばyyyy-mm-dd hh:nn:ss)なんかに変換するでしょうね。
date()を使って
date('Y-m-d H:i:s');とすれば現在日時を9999-99-99 99:99:99という形式で出力できます。

DateTimeクラスを使うのであれば、
DateTime::format()を使って文字列化します。

php

1$now = new DateTime(); 2echo $now->format('Y-m-d H:i:s');

とすれば現在日時を9999-99-99 99:99:99という形式で出力できます。

なんて、こんな情報はネットを検索すれば分かる話なので、もしかしたらもっと深い話を知りたいのでしょうか?

投稿2018/10/09 05:19

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2018/10/09 06:03

ネットで調べてもわかりやすい記事があまり出てこなかったので…ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問