時分秒の加算(PHP版) ソースと解説

前回のBASIC版の時分秒の加算プログラムは十進BASICをインストールしたWindowsPCでないと実行できないという問題がありました。是非Web上で使えるようにして欲しいという要望を戴いたので、今回はPHPで書いてみましたので紹介します。

ソース

実際の文字コードはUTF-8ですが、ここではShift-JISにして表示します。

MVCfile name概要
Controlleraddtime.phpプログラムの本体
Modeladdtime_model.php各関数の定義
Viewaddtime_main.php入力フォーム・結果表示・エラー表示のhtmlを作る部分
addtime_tmpl.phpWebブラウザに送るhtmlを構成する枠組
header.phpAvocadoMix共通ヘッダー
footer.phpAvocadoMix共通フッター

controllers/addtime.php

  1. 画面に入力した値を受け取って計算し、結果を表示するだけなら簡単ですが、今回のものは、表示した値を次の処理に引き継ぐ必要があります。
  2. そこで、普段はデータベース更新処理(登録・修整・削除)のプログラムで使っているvalidationライブラリを使います。
  3. 入力値は時間分秒とも二桁までの数字だけという制限にしています。
  4. 分と秒に関しては60以上でも入力できます。
  5. 入力エラーの場合はその前までの累計値と入力した値を表示し、継続して入力できるようにしています。

models/addtime_model.php

  1. いつものように、航空機の写真をランダムに表示することにしました。単なる趣味です。
  2. 計算のアルゴリズムは前回のBASICの時と同じく、一旦秒単位にして加算し時分秒に分けるという方式を採っています。

views/addtime_main.php

  1. 最初に航空機の写真を表示します。
  2. 次に累計文字列を表示します。初期画面では表示されません。
  3. その横に括弧で来るんだ秒単位の累計値を表示します。初期画面では括弧だけ表示されないように累計値がある場合だけの表示にしています。
  4. 累計秒は桁が多くなるので三桁毎にコンマを入れて表示します。
  5. 次の行では入力エラーのメッセージを表示しています。
  6. 次に、入力フォームを構成します。
  7. 「加算」というボタンが押されたら、addtime.php内のaddtime_keisanを実行する指定をしています。
  8. そのとき、時間・分・秒の入力値だけでなく、累計秒も引き渡すようにしています。
  9. 入力フォームの次に別フォームとして「累計クリア」ボタンを作っています。
  10. これは単にaddtime.phpのindex()を実行させる為です。

実行例

時間・分・秒を入力します。ゼロの場合は入力しなくてもかまいません。

次々と加算していくと、累計値が計算されて表示されます。

時分秒だけでなく、秒単位でも表示しています。これはYouTubeの映像でマウスを当てると時分秒で表示されるますが、開始時刻終了時刻を指定する時には秒単位で書かなくてはいけない時に便利です。

入力値エラーの場合はこのように表示されます。もし数字でなく、文字を入力してもエラーとなります。

「累計クリア」ボタンを押すと初期状態にもどります。

2016年10月24日 記