プロが教えるわが家の防犯対策術!

PHPとJavaScriptで出勤時刻と退勤時刻のみを管理するシステムを作成する場合、SQLの知識は不要ですか? 大まかな作成手順を教えていただけると幸いです。出勤、退勤時刻以外の労働時間数や残業時間等は管理対象外とします。

機能と画面構成は以下の通りです。
【機能】
(1) 出勤時刻の打刻
(2) 退勤時刻の打刻
(3) 出勤時刻の修正
(4) 退勤時刻の修正
(5) 期間指定による出勤表の表示

【画面構成】
(1) 出勤打刻
・ページタイトル
・JavaScriptで現在の時刻をリアルタイムに表示
・打刻ボタン
(2) 退勤打刻
・ページタイトル
・JavaScriptで現在の時刻をリアルタイムに表示
・打刻ボタン
(3) 出勤表
・ページタイトル
・期間指定フォーム
・日別で出勤打刻と退勤打刻を一覧表示
(4) 出勤打刻の修正
・ページタイトル
・時刻修正フォーム
(5) 退勤打刻の修正
・ページタイトル
・時刻修正フォーム

質問者からの補足コメント

  • どう思う?

    回答ありがとうございます。SQLについて復習しておきます。(5)の期間指定による出勤表の表示(期間指定フォームと日別に一覧表示)はどのように考えればよいでしょうか?

    No.3の回答に寄せられた補足コメントです。 補足日時:2021/09/26 22:34
  • どう思う?

    回答ありがとうございます。
    timecardという名前のテーブルを作成し、
    ユーザ名(またはユーザーID)、出勤時間、退勤時間、日付を
    以下のようにCREATE TABLEで定義すればいいですか?

    CREATE TABLE `timecard` (
    `user_name` varchar(255) NOT NULL UNIQUE,
    `begin` time DEFAULT NULL,
    `finish` time DEFAULT NULL,
    `date` datetime DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    No.2の回答に寄せられた補足コメントです。 補足日時:2021/09/28 15:54
  • どう思う?

    補足ありがとうございます。時刻修正のフォームを作るときはセレクトフォームではなく、<input type="text" name="hour">のようにして、バリデーション処理を追加する方針で合っていますか?(時間:06~24時の間、分と秒:00~59の間 半角数字のみ)

    No.4の回答に寄せられた補足コメントです。 補足日時:2021/09/30 19:33
  • どう思う?

    補足ありがとうございます。(1) 出勤打刻と(2) 退勤打刻はとりあえず完成しました。timecardテーブル(id、begin_hour、begin_minutes、finish_hour、finish_minutes、date)を作成し、DBに保存しています。時刻修正のフォームを作るときは、<input type="text" name="hour">のようにしてバリデーション処理を追加する方針で合っていますか?(時間:06~24時の間、分と秒:00~59の間 半角数字のみ許可)また、DBに保存するときは、時間、分、(秒)を分けずに保存した方がいいですか?

    No.5の回答に寄せられた補足コメントです。 補足日時:2021/10/01 14:14

A 回答 (5件)

> No.4 の補足


画面デザインには正解がないので、あくまでも参考までに指摘します

2501 から 0559 が入力できない
→ 夜勤は禁止するためか?

マウスやタッチだけで操作したい
→ 分単位の増減ボタンを併設

入力欄が細かく分かれていて、ちまちまと面倒くさい
→ 期間内をCSVでまとめて編集する <textarea> かファイル送受信
この回答への補足あり
    • good
    • 0

> No.2 の補足


関係データベースならば主キーを設けるべき
今回の場合なら user_name と date の二つを主キーとしましょう
キーに DEFAULT NULL や UNIQUE の指定は邪魔です

date 型があるのに datetime 型をつかう必要はないでしょう

> No.3 の補足
単純に以下のような条件で検索すればよいかと
WHERE user_name = 対象ユーザ
AND date BETWEEN (開始日 and 終了日)
ORDER BY date ASC
この回答への補足あり
    • good
    • 0

> SQLの知識は不要ですか?



考え方が逆です。
システムの詳細が決まらないとわかりません。


取得した時刻を保存する方法はいくつもあります。
代表的なのは、ファイルとデータベースでしょう。

ファイルに保存するならSQLの知識は不要です。
代りに、ファイル操作の知識が必要です。

データベースに保存するなら、SQLが普通ですが、
フレームワーク等によっては、SQLの知識が無くてもアクセスできるようになっているかもしれません。
この回答への補足あり
    • good
    • 0

こんにちは



>出勤時刻と退勤時刻のみを管理するシステム
>出勤、退勤時刻以外の労働時間数や残業時間等は管理対象外
何をしたいのかによるのでは?
個人をどうやって特定するのか知りませんけれど、単に、記録(日時、個人、出勤/退勤)が残れば良いだけなら、データベースにしなくても逐次順に記録するだけでも済むでしょう。

一昔(もっとかな?)前の、タイムレコーダー(=機械)があれば済むって話のような気がします。
(現在はソフト化されて、便利にしたものが、いろいろあるようですけれど)
とはいえ、その「記録」をどう使うんでしょうね?

一方で、組織が対象なのでしょうから、人員の増減時の処置とか、人員リストとの照合など、まるっきり考慮しなくてもよいのかなぁ?
まぁ、対象数が数人レベルのものなら、そんなことは気にせずに、随時手作業で処理すれば良いことにしちゃえばすむのかも知れませんけれど。

それでも、作成する手間を考えれば、既製品の簡単なソフトを利用するという選択肢が十分にありそうな気がしますけれど…
この回答への補足あり
    • good
    • 0

あなたに与えられた課題でしょ


普通、コレを元にコーディングしただけでも1時間に2千円は貰えるんですよ
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!