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

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

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

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

Q&A

解決済

2回答

1085閲覧

お客様フォーム送信時の日時をCSVデータに記録したい

takasports

総合スコア5

PHP

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

0グッド

0クリップ

投稿2021/06/06 03:00

編集2021/06/06 04:30

前提・実現したいこと

PHPで、お問合せフォームを作っています。
お客様フォーム送信時の日時をCSVデータに記録したいです。
現在、名前、メールアドレス等、のCSVデータ登録はできています。
お客様がデータ送信時の、西暦年、月、日、時、分の(セルは一区画で)データを
記載するシステムを構築したいと考えております。

今までの、名前、メールアドレス等の書き込みはできています。

csvデータコピー:
ああいい,abc@def,0336761111,1330000,東京都,法人,コメント

これに、日時データを追加したいと考えております。

ファイル構成は、index.html,form.php,user.csvと
tmplのフォルダ。その中に、comf.tmpl,error.tmpl,send.tmpl
があります。

発生している問題・エラーメッセージ

エラーメッセージ等はありませんが、CSVの記載が出来ていません。

該当のソースコード

php

form.php

<?php # 送信先アドレス $mailto = "a@a.co.jp"; # 送信後画面からの戻り先 $toppage = "./index.html"; # 日本標準時(JST) に設定 date_default_timezone_set('Asia/Tokyo'); $mytime = date("Y-m-d h:m"); #=========================================================== # 入力情報の受け取りと加工 #=========================================================== $name = $_POST["name"]; $email = $_POST["email"]; $tel = $_POST["tel"]; $zipcode = $_POST["zipcode"]; $address = $_POST["address"]; $attribute = filter_input(INPUT_POST,"attribute"); $comment = $_POST["comment"]; # 無効化 $name = htmlentities($name,ENT_QUOTES, "UTF-8"); $email = htmlentities($email,ENT_QUOTES, "UTF-8"); $tel = htmlentities($tel,ENT_QUOTES, "UTF-8"); $zipcode = htmlentities($zipcode,ENT_QUOTES, "UTF-8"); $address = htmlentities($address,ENT_QUOTES, "UTF-8"); $comment = htmlentities($comment,ENT_QUOTES, "UTF-8"); # 改行処理 $name = str_replace("\r\n", "", $name); $email = str_replace("\r\n", "", $email); $tel = str_replace("\r\n", "", $tel); $zipcode = str_replace("\r\n", "", $zipcode); $address = str_replace("\r\n", "", $address); $comment = str_replace("\r\n", "\t", $comment); $comment = str_replace("\r", "\t", $comment); $comment = str_replace("\n", "\t", $comment); # 時間取得 $mytime = time(); # 入力チェック if ($name == "") { error("名前が未入力です"); } if (!preg_match("/\w+@\w+/",$email)){ error("メールアドレスが不正です"); } if ($comment == "") { error("コメントが未入力です"); } # 分岐チェック if ($_POST["mode"] == "post") { conf_form(); } else if($_POST["mode"] == "send") { send_form(); } #----------------------------------------------------------- # 確認画面 #----------------------------------------------------------- function conf_form(){ global $name; global $email; global $tel; global $zipcode; global $address; global $attribute; global $comment; # テンプレート読み込み $conf = fopen("tmpl/conf.tmpl","r") or die; $size = filesize("tmpl/conf.tmpl"); $data = fread($conf , $size); fclose($conf); # 文字置き換え $data = str_replace("!name!", $name, $data); $data = str_replace("!email!", $email, $data); $data = str_replace("!tel!", $tel, $data); $data = str_replace("!zipcode!", $zipcode, $data); $data = str_replace("!address!", $address, $data); $data = str_replace("!attribute!", $attribute, $data); $data = str_replace("!comment!", $comment, $data); # 表示 echo $data; exit; } #----------------------------------------------------------- # エラー画面 #----------------------------------------------------------- function error($msg){ $error = fopen("tmpl/error.tmpl","r"); $size = filesize("tmpl/error.tmpl"); $data = fread($error , $size); fclose($error); #文字置き換え $data = str_replace("!message!", $msg, $data); #表示 echo $data; exit; } #----------------------------------------------------------- # CSV書込 #----------------------------------------------------------- function send_form(){ global $name; global $email; global $tel; global $zipcode; global $address; global $attribute; global $comment; global $time; $user_input = array($time,$name,$email,$tel,$zipcode,$address,$attribute,$comment); mb_convert_variables("SJIS","UTF-8",$user_input); $fh = fopen("user.csv","a"); flock($fh,LOCK_EX); fputcsv($fh, $user_input); flock($fh,LOCK_UN); fclose($fh); # テンプレート読み込み $conf = fopen("tmpl/send.tmpl","r") or die; $size = filesize("tmpl/send.tmpl"); $data = fread($conf , $size); fclose($conf); #文字置き換え global $toppage; $data = str_replace("!top!", $toppage, $data); #表示 echo $data; exit; } **●お客様フォームHTML** index.html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>お問い合わせ ツ</title> <link href="https://use.fontawesome.com/releases/v5.6.1/css/all.css" rel="stylesheet"> <style> body{ width: 1000px; margin-left: auto; margin-right: auto; font-family: "游ゴシック Medium", "Yu Gothic Medium", YuGothic, "游ゴシック体", "ヒラギノ角ゴ Pro W3", "メイリオ", sans-serif; } </style> </head> <body> <div id="headerLogo"> <a href="../index.html"><div id="kjsLogo"><img src="../images/kjslogo.png" alt="スポーツロゴ" width="80px" /></div></a> <div id="kjsNameLogo"> <a href="../index.html"><p><img src="../images/kjs-name-eigo.png" width="300px" /></p> <p><img src="../images/kjs-name-katakana.png" width="300px" height="22px" /></div></a> </p> </div> <div> <nav id="annai-left"> <h1>お問い合わせ</h1> <p> のホームページにアクセスありがとうございます。<br>お問い合わせいただきました件につきましては、原則メールにて回答申し上げます。<br>尚、お電話での回答をご希望の方は、電話番号のご入力をお願いいたします。</p> <p>よろしくお願いいたします。</p> </nav> <nav id="annai-right"> <p>電話でのお問い合わせ</p> <p id="phone"></p> <p>FAXでのお問い合わせ</p> <p id="fax"></p> <p>受付時間 平日9時~17時30分</p> </nav> </div> <form action="form.php" method="post"> <table id="otoiawaseform" cellspacing="0" cellpadding="20" > <tr> <th>お名前 <span class="hissu">(必須)</span></th> <td><input type="text" name="name" placeholder="(例)山田太郎" size="40" required></td> </tr> <tr> <th>メールアドレス <span class="hissu">(必須)</span></th> <td> <input type="email" name="email" placeholder="(例)ooo@×××" size="40" required></td> </tr> <tr> <th>電話番号 <span class="hissu">(ご希望の方)</span></th> <td><input type="tel" name="tel" placeholder="(例)09011112222 ハイフンなし" size="25" ></td> </tr> <tr> <th>郵便番号</th> <td><input type="text" name="zipcode" placeholder="(例)1500031 ハイフンなし" size="20" pattern="\d{7}" ></td> </tr> <tr> <th>住所</th> <td><input type="text" name="address" placeholder="都道府県、市区町村、番地、建物名" size="50" ></td> </tr> <tr> <th>お客様の属性</th> <td> <input type="radio" name="attribute" value="卸業関係">卸業関係の方 <input type="radio" name="attribute" value="法人">法人の方 <input type="radio" name="attribute" value="個人">個人の方 </td> </tr> <tr> <th>お問い合わせ内容 <span class="hissu">(必須)</span></th> <td> <textarea name="comment" cols="70" rows="10"></textarea> </td> </tr> </table> <input type="submit" name="submit" value="送信します" class="sousinbtn"> <input type="hidden" name="mode" value="post"> </form> <a href="../index.html #sec0" ><p id="return-top">メインページに戻る</p></a> </body> </html> **●確認画面 TMPL** tmpl/comf.tmpl <!doctypr html> <html> <head> <meta charset="utf-8"> <style type="text/css"> body{ width: 500px; margin-left: auto; margin-right: auto; margin-top: 100px; padding:20px; font-family: "游ゴシック Medium", "Yu Gothic Medium", YuGothic, "游ゴシック体", "ヒラギノ角ゴ Pro W3", "メイリオ", sans-serif; background-color: #f7f3ee; border: 1px solid black; } .button{ margin-left: 60px; } <!-- span { color:blue; } --> </style> <title>確認フォーム</title> </head> <body> <h3>次の内容でよろしければ、送信ボタンを押してください。</h3> <p> ■お名前 : <span>!name!</span> </p> <p> ■メールアドレス : <span>!email!</span> </p> <p> ■電話番号 : <span>!tel!</span> </p> <p> ■郵便番号 : <span>!zipcode!</span> </p> <p> ■住所: <span>!address!</span> </p> <p> ■お客様の属性 : <span>!attribute!</span> </p> <p> ■コメント : <span>!comment!</span> </p> <form action="form.php" method="post"> <input type="hidden" name="mode" value="send"> <input type="hidden" name="name" value="!name!"> <input type="hidden" name="email" value="!email!"> <input type="hidden" name="tel" value="!tel!"> <input type="hidden" name="zipcode" value="!zipcode!"> <input type="hidden" name="address" value="!address!"> <input type="hidden" name="attribute" value="!attribute!"> <input type="hidden" name="comment" value="!comment!"> <input type="button" value="前に戻る" onclick="history.back()" class=button> <input type="submit" value="送信する" class=button> </form> </body> </html> **●エラー画面 TMPL** tmpl/error.tmpl <!doctype html> <html> <head> <meta charset="utf-8"> <style type="text/css"> p.msg{ color:red; } </style> <title>エラー</title> </head> <body> <p><b>エラーが発生しました。</b></p> <p class="msg">!message!</p> <form> <input type="button" value="前画面に戻る" onclick="history.back()"> </form> </body> </html> **● 送信画面 TMPL** tmpl/send.tmpl <!doctype html> <html> <head> <meta charset="utf-8"> <title>送信完了</title> <style> body{ width: 1000px; margin-left: auto; margin-right: auto; margin-top: 200px; text-align: center; background-color: #f7f3ee } </style> </head> <body> <h3>ありがとうございました。</h3> <p>こちらからの回答までしばらくお待ちください。</p> <form> <input type="button" value="トップへ戻る" onclick="location.href='!top!';"> </form> </body> </html> ``` ### 試したこと # 日本標準時(JST) に設定、# 時間取得 、# CSV書込 のグローバル登録、user input のコードを入れました。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。

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

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

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

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

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

itagagaki

2021/06/06 03:11

「CSVの記載が出来ていない」というのは、具体的には、どういうことですか? ファイルは作成され、書き込みはされているのですか? もしそうなら、その内容はどうなっているのですか?
takasports

2021/06/06 03:17

ご質問ありがとうございます。 ファイルは作成していて、今までの、名前、メールアドレス等の書き込みはできています。 csvデータコピー: ああいい,abc@def,0336761111,1330000,東京都,法人,コメント これに、日時データを追加したいと考えております。 ご指摘ございましたらよろしくお願いいたします。
itagagaki

2021/06/06 03:20

質問も編集しておいてください。
takasports

2021/06/06 03:23

修正しました。 よろしくお願いします。
itagagaki

2021/06/06 03:24

$global $time の宣言と参照がありますが、$time に実際に値をセットするコードが見当たらないですね。 そのあたりはどうなっているのですか?
takasports

2021/06/06 03:27

ご指摘のとおり、値の設定や、送信時の指示等のコード記載が分かりません。 よって、未記載です。
guest

回答2

0

自己解決

PHP

1date_default_timezone_set('Asia/Tokyo'); 2$mytime = date("Y/m/d H:i");

時間が正確に表示されなかったので、再考し、
正解と思われるコードを入力し、解決しました。

投稿2021/06/08 09:00

編集2021/06/08 09:04
takasports

総合スコア5

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

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

0

PHP

1date_default_timezone_set('Asia/Tokyo'); 2$mytime = date("Y-m-d h:m");

これで現在時刻の "2021-06-06 12:42" のような文字列が得られます。

投稿2021/06/06 03:42

itagagaki

総合スコア8402

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

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

takasports

2021/06/06 03:51

ご回答ありがとうございます。 コードの追記をいたしましたが、カンマは新たに追記されましたが、日時の文字列がありませんでした。 ご指摘等ございましたらよろしくお願いします。
itagagaki

2021/06/06 04:51

$timeと$mytimeが混乱しているのでは?
takasports

2021/06/06 05:36

ありがとうございます。 ご指摘いただいた内容を確認の上、日時記載できました。 しかし、時間について、下記記載時間のままで、その後、新たにデータ送信しても同じ時間しか出ません。 修正できますでしょうか。 CSVデータ: "2021-06-06 02:06",名前,mls@jkw,0336760000,1330065,東京都江戸川区,法人,コメント 再度、よろしくお願いいたします。
itagagaki

2021/06/06 05:59

send_form内で$timeを表示してデバッグしてみてはどうですか?
takasports

2021/06/06 06:10

ありがとうございます。 send_form内にtimeの項目がないので、どのようなコードが必要か皆目見当がつきません。 大変恐縮で申し訳ございませんが、よろしくお願いします。
itagagaki

2021/06/06 06:19

? send_formで$timeなどを書き込んでいるわけですよね。 そこで echo $time; してみたらどうですか?
takasports

2021/06/06 08:15

失礼しました。 echo $mytime を書き込みました。 送信済み画面に、2021-06-06 05:06 の記載があります。 12時間前の時刻が表示されました。 コードの問題か、もしくは、私の環境によるものなのか。 ご教示いただけましたら幸いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問