• 締切済み

時間計算

初歩的な質問になるかもしれませんが お願いいたします。 ホームページ上で時間の計算をしたいと考えております。 HPのフォーム等で時間を登録 その時間まであと何時間かを表示。 その時間が過ぎれば定型文を表示。 私はプログラムとかまったく出来ないので こういうphpを探しています。 技術的には可能でしょうか? 可能ならば こういうプログラムを 無料で公開している所を ご存じないでしょうか? 詳しい使い方を申しますと 私は今、ネイルサロンを立ち上げている段階で HPを製作(私が作っています)しているのですが HP上でお客様が今、来店したときに どれくらいの待ち時間が必要か HP上で確認できるようにしたいと思って こういうCGI、PHPを探しています。 HPをそのつど更新すればよいのでしょうが いかんせんスタッフがつきっきりで 更新というのは無理があり、 出来れば、スタッフが持っている携帯で HPを開き、そこで 今から何分~何時間接客(ネイル処理) ということを登録すれば HPを見たお客さんが 何時間待ちというのを わかる、見れる。と言う風にしたいと 考えております。 BBS等で書き込みを パスワード制にして。。。 ということも考えましたが 見た目がスマートではないので 出来ればPHPなどを使いたいと考えてます。 製作会社に依頼をすることも考えましたが いかんせん初期投資を できるだけ抑えたいもので。。。すいません。 もし、多少勉強すれば 製作可能なら自分で勉強して 製作したいとも思います。 いろいろサイトを回っても 現在時刻を取得、表示、 日付の計算等しか見つからず 悩んでおります。 参考になる HP等でも結構ですので お力をおかしねがいます。

みんなの回答

  • bis_love
  • ベストアンサー率80% (4/5)
回答No.3

No.2です。 すみません、そもそも携帯で更新したい、って話でしたね(^^; 携帯で更新されたいなら、やっぱりPHPになりますね。失礼しました。 >HPのフォーム等で時間を登録 >その時間まであと何時間かを表示。 >その時間が過ぎれば定型文を表示。 ※上記のようなシステムはどこかで提供されているのかもしれませんが、ないという前提で進めさせていただきます。 このようなシステムを運用する場合、以下のようなステップを踏みます。 1.時間を登録するフォームを作成する。(スタッフが使用) 2.待ち時間を計算して表示するPHPを作成する。(お客様が使用するページ) 必要なファイルは以下のとおり。 (1)時間を登録するフォーム (2)フォームのデータを受け取り外部ファイルに時間を書き込むPHP (3)時間を書き込むファイル (4)(3)のファイルと、アクセス時間とを計算しメッセージを表示するPHP で、簡単にですが作ってみました。 (1)時間を登録するフォーム(input_view.php) <?php define(YEAR_LIMIT,1); // 何年先まで選択対象にするか設定。 // 選択用の年月日時分を作成 $now = time(); $year = date('Y', $now); $month = date('m', $now); $day = date('d', $now); $hour = date('H', $now); $minute = date('i', $now); ?> <html> <head> <title>input php</title> </head> <body> <form action="input.php" method="post"> <p> <!-- 年 --> <select name="year"> <?php for($i = $year; $i <= $year+YEAR_LIMIT; $i++) { if($i == $year) { echo "<option value=\"$i\" selected>".$i."</option>"; } else { echo "<option value=\"$i\">".$i."</option>"; } } ?> </select>年 <!-- 月 --> <select name="month"> <?php for($i = 1; $i <= 12; $i++) { if($i == $month) { echo "<option value=\"$i\" selected>".$i."</option>"; } else { echo "<option value=\"$i\">".$i."</option>"; } } ?> </select>月 <!-- 日 --> <select name="day"> <?php for($i = 1; $i <= 31; $i++) { if($i == $day) { echo "<option value=\"$i\" selected>".$i."</option>"; } else { echo "<option value=\"$i\">".$i."</option>"; } } ?> </select>日 <!-- 時 --> <select name="hour"> <?php for($i = 0; $i <= 23; $i++) { if($i == $hour) { echo "<option value=\"$i\" selected>".$i."</option>"; } else { echo "<option value=\"$i\">".$i."</option>"; } } ?> </select>時 <!-- 分 --> <select name="minute"> <?php for($i = 1; $i <= 59; $i++) { if($i == $minute) { echo "<option value=\"$i\" selected>".$i."</option>"; } else { echo "<option value=\"$i\">".$i."</option>"; } } ?> </select>分 </p> <input type="hidden" name="mode" value="write"> <input type="submit" value=" submit " /> </form> </body> </html> (2)フォームのデータを受け取り外部ファイルに時間を書き込むPHP(input.php) <?php // ファイル名設定 define(FILE_NAME, "time.txt"); if(strlen($_POST[mode]) && strcmp($_POST[mode],"write") == 0) { // POSTデータの受け取り $year = $_POST[year]; $month = $_POST[month]; $day = $_POST[day]; $hour = $_POST[hour]; $minute = $_POST[minute]; // 外部ファイルに書き込み $fp = fopen(FILE_NAME, "w"); fwrite($fp, $hour."\r\n".$minute."\r\n0\r\n".$month."\r\n".$day."\r\n".$year); fclose($fp); echo "時間設定完了しました。<br />"; echo "<a href=\"input.php\">戻る</a>"; } else { // 入力画面の表示。 require_once("input_view.php"); } ?> (3)時間を書き込むファイル(time.txt) このファイルは、空っぽのファイルを作るだけでいいです。 サーバー上にUP後、パーミッションを606か666等にすれば動きます。 (4)(3)のファイルと、アクセス時間とを計算しメッセージを表示するPHP(output.php) <?php // 待ち時間オーバー時のメッセージ設定 define(OVER_MESSAGE, "オーバー"); $message = ""; $time_array = file("time.txt"); $time = mktime($time_array[0],$time_array[1],$time_array[2],$time_array[3],$time_array[4],$time_array[5]); $now=mktime(); $timediff = $time - $now; if($timediff>0) { $hour =(int) ($timediff / 3600 ); $minute =(int) ($timediff % 3600 /60) ; $message = sprintf("%02d時間%02d分", $hour, $minute); $message = "残り待ち時間は<b>".$message."</b>です。"; } else { $message = OVER_MESSAGE; } echo $message; ?> 上記4ファイルをコピペなどで作成後、FTPアップしていただければ、動くと思います。 あとはメッセージを表示したい箇所にインラインフレームなどでoutput.php(名称変更可能)を読み込めんでいただければOKです。 待ち時間オーバー時のメッセージ設定は define(OVER_MESSAGE, "オーバー");のところをいじっていただければOKです。 簡単に作ったものなんで入力チェック等は省略してます。 また、時間を設定するPHPには簡単なアクセス制限を設けたほうがセキュリティ上好ましいと思います。 こういう作り方もあるよ・・というかんじですが参考になれば、と思います。 長文になりすみません。失礼します。

  • bis_love
  • ベストアンサー率80% (4/5)
回答No.2

>HP上でお客様が今、来店したときに >どれくらいの待ち時間が必要か >HP上で確認できるようにしたいと思って というのを見ていると、PHPよりもjavascriptで処理したほうが簡単かな?という印象を持ちました。 指定時刻までのカウントダウン系のjavascriptはよくありますし。 そういうjavascriptを別ファイルで作って、HP上ではそのjavascriptを読み込めば終わりです。 待ち時間を更新するときは、その別ファイルのjavascriptの時間指定のところを書き換えてることで更新できます。 参考URLでは、カウントダウン、イベント表示のJavaScriptを作成してもらえます。 このツールで作ったjavascriptを、少しいじってもらえればやりたいことはできると思います。 ただ、javascriptに対応していない携帯とかだと使えないので、それだと困る場合は補足にてお伝えください。

参考URL:
http://www3.kcn.ne.jp/~tomate/JavaScript/CountDownMaker.html
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

PHPで時間計算をする場合、リアルタイムに時計を動かすことは 難しいと思います、本当の待ち時間をみたいならそのたびに ページ更新してもらうことになるでしょう。 それを前提に・・・ 登録した時間は文字列で指定します。 それをstrtotime()でunix時間に直します。 今の時間はmktime()で得られますので、その差が待ち時間です。 <? $timestr="16:00"; $time=strtotime($timestr); $now=mktime(); $timediff=$time-$now; if($timediff>0){ $hour=(int) ($timediff / 3600 ); $minute=(int) ($timediff % 3600 /60) ; $second=(int) ($timediff % 60) ; printf("%02d:%02d:%02d", $hour, $minute, $second); }else{ print "over"; } ?>

関連するQ&A