teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

修正しました

2021/05/25 23:27

投稿

kens_Freelance
kens_Freelance

スコア10

title CHANGED
File without changes
body CHANGED
@@ -55,4 +55,80 @@
55
55
 
56
56
  }
57
57
  ?>
58
+ ```
59
+
60
+ 修正します。
61
+ アドバイスいただいた内容を参考にし、
62
+ 「時間差($time['0'])」を加算していくのではなく
63
+ 下記のコードのように開始時間と終了時間の差を
64
+ work_timesというテーブルに入れていくことにしました。
65
+ そして、そのテーブルの時間合計を取得して出力するまではできたのですが、
66
+ 例えば、50秒の時間合計だったときに
67
+ 09:00:50
68
+ というような表示になってしまいます。
69
+ これを直すにはどのようにすればいいでしょうか。
70
+
71
+ php.iniのタイムゾーンは
72
+ date.timezone = Asia/Tokyo
73
+ になっております。
74
+
75
+
76
+
77
+ ```ここに言語を入力
78
+
79
+
80
+
81
+
82
+ <?php
83
+ if(isset($_POST['start'])) {
84
+
85
+ // 今日の日付のstart_timesテーブルのレコード数を取得
86
+ $start_times_table = $db->query('SELECT * FROM start_times WHERE start_time_date = CURRENT_DATE');
87
+ $start_times_records = $start_times_table->rowCount();
88
+
89
+ // 今日の日付のstop_timesテーブルのレコード数を取得
90
+ $stop_times_table = $db->query('SELECT * FROM stop_times WHERE stop_time_date = CURRENT_DATE');
91
+ $stop_times_records = $stop_times_table->rowCount();
92
+
93
+ // start_timesとstop_timesのレコード数が同じかどうか, 同じであればstart_timesにインサート
94
+ if($start_times_records == $stop_times_records){
95
+ $db->exec('INSERT INTO start_times SET start_time_date=NOW(), start_time=NOW()');
96
+ } else {
97
+ echo '<br>' . '一度開始が押されています。「終了」を押してください' . '<br><br>';
98
+ }
99
+ } else if(isset($_POST['stop'])) {
100
+ $db->exec('INSERT INTO stop_times SET stop_time_date=NOW(), stop_time=NOW()');
101
+
102
+ $starts = $db->query('SELECT * FROM start_times ORDER BY id DESC LIMIT 1');
103
+ $stops = $db->query('SELECT * FROM stop_times ORDER BY id DESC LIMIT 1');
104
+ $start = $starts->fetch();
105
+ $stop = $stops->fetch();
106
+ $db->exec("INSERT INTO work_times SET work_time_date = NOW(), work_time = TIMEDIFF( '". $stop['stop_time'] ."' , '" . $start['start_time'] ."' )");
107
+
108
+
109
+ }
110
+ $work_times = $db->query('SELECT SUM(work_time) FROM work_times WHERE work_time_date = CURRENT_DATE');
111
+ $work_time = $work_times->fetch();
112
+ echo date('h:i:s', $work_time['SUM(work_time)']);
113
+
114
+
115
+
116
+
117
+ // 今日のstart,stopのデータを1件ずつ交互に全て表示
118
+ $start_times = $db->query('SELECT * FROM start_times WHERE start_time_date = CURRENT_DATE');
119
+ $stop_times = $db->query('SELECT * FROM stop_times WHERE stop_time_date = CURRENT_DATE');
120
+ while($start_time = $start_times->fetch()) {
121
+ echo "開始" . $start_time['start_time_date'] . " " . $start_time['start_time'] . '<br>';
122
+ $stop_time = $stop_times->fetch();
123
+ echo "終了" . $stop_time['stop_time_date'] . " " . $stop_time['stop_time'] . '<br>';
124
+
125
+ $times = $db->query("SELECT TIMEDIFF('". $stop_time['stop_time'] ."' , '" . $start_time['start_time'] ."')" );// 時間差
126
+ $time = $times->fetch();
127
+ echo $time['0'] . '<br>' . '<br>';
128
+
129
+
130
+ }
131
+
132
+ ?>
133
+
58
134
  ```

1

phpMyAdminタグを削除しました

2021/05/25 23:27

投稿

kens_Freelance
kens_Freelance

スコア10

title CHANGED
File without changes
body CHANGED
File without changes