質問編集履歴

2

修正しました

2021/05/25 23:27

投稿

kens_Freelance
kens_Freelance

スコア10

test CHANGED
File without changes
test CHANGED
@@ -113,3 +113,155 @@
113
113
  ?>
114
114
 
115
115
  ```
116
+
117
+
118
+
119
+ 修正します。
120
+
121
+ アドバイスいただいた内容を参考にし、
122
+
123
+ 「時間差($time['0'])」を加算していくのではなく
124
+
125
+ 下記のコードのように開始時間と終了時間の差を
126
+
127
+ work_timesというテーブルに入れていくことにしました。
128
+
129
+ そして、そのテーブルの時間合計を取得して出力するまではできたのですが、
130
+
131
+ 例えば、50秒の時間合計だったときに
132
+
133
+ 09:00:50
134
+
135
+ というような表示になってしまいます。
136
+
137
+ これを直すにはどのようにすればいいでしょうか。
138
+
139
+
140
+
141
+ php.iniのタイムゾーンは
142
+
143
+ date.timezone = Asia/Tokyo
144
+
145
+ になっております。
146
+
147
+
148
+
149
+
150
+
151
+
152
+
153
+ ```ここに言語を入力
154
+
155
+
156
+
157
+
158
+
159
+
160
+
161
+
162
+
163
+ <?php
164
+
165
+ if(isset($_POST['start'])) {
166
+
167
+
168
+
169
+ // 今日の日付のstart_timesテーブルのレコード数を取得
170
+
171
+ $start_times_table = $db->query('SELECT * FROM start_times WHERE start_time_date = CURRENT_DATE');
172
+
173
+ $start_times_records = $start_times_table->rowCount();
174
+
175
+
176
+
177
+ // 今日の日付のstop_timesテーブルのレコード数を取得
178
+
179
+ $stop_times_table = $db->query('SELECT * FROM stop_times WHERE stop_time_date = CURRENT_DATE');
180
+
181
+ $stop_times_records = $stop_times_table->rowCount();
182
+
183
+
184
+
185
+ // start_timesとstop_timesのレコード数が同じかどうか, 同じであればstart_timesにインサート
186
+
187
+ if($start_times_records == $stop_times_records){
188
+
189
+ $db->exec('INSERT INTO start_times SET start_time_date=NOW(), start_time=NOW()');
190
+
191
+ } else {
192
+
193
+ echo '<br>' . '一度開始が押されています。「終了」を押してください' . '<br><br>';
194
+
195
+ }
196
+
197
+ } else if(isset($_POST['stop'])) {
198
+
199
+ $db->exec('INSERT INTO stop_times SET stop_time_date=NOW(), stop_time=NOW()');
200
+
201
+
202
+
203
+ $starts = $db->query('SELECT * FROM start_times ORDER BY id DESC LIMIT 1');
204
+
205
+ $stops = $db->query('SELECT * FROM stop_times ORDER BY id DESC LIMIT 1');
206
+
207
+ $start = $starts->fetch();
208
+
209
+ $stop = $stops->fetch();
210
+
211
+ $db->exec("INSERT INTO work_times SET work_time_date = NOW(), work_time = TIMEDIFF( '". $stop['stop_time'] ."' , '" . $start['start_time'] ."' )");
212
+
213
+
214
+
215
+
216
+
217
+ }
218
+
219
+ $work_times = $db->query('SELECT SUM(work_time) FROM work_times WHERE work_time_date = CURRENT_DATE');
220
+
221
+ $work_time = $work_times->fetch();
222
+
223
+ echo date('h:i:s', $work_time['SUM(work_time)']);
224
+
225
+
226
+
227
+
228
+
229
+
230
+
231
+
232
+
233
+ // 今日のstart,stopのデータを1件ずつ交互に全て表示
234
+
235
+ $start_times = $db->query('SELECT * FROM start_times WHERE start_time_date = CURRENT_DATE');
236
+
237
+ $stop_times = $db->query('SELECT * FROM stop_times WHERE stop_time_date = CURRENT_DATE');
238
+
239
+ while($start_time = $start_times->fetch()) {
240
+
241
+ echo "開始" . $start_time['start_time_date'] . " " . $start_time['start_time'] . '<br>';
242
+
243
+ $stop_time = $stop_times->fetch();
244
+
245
+ echo "終了" . $stop_time['stop_time_date'] . " " . $stop_time['stop_time'] . '<br>';
246
+
247
+
248
+
249
+ $times = $db->query("SELECT TIMEDIFF('". $stop_time['stop_time'] ."' , '" . $start_time['start_time'] ."')" );// 時間差
250
+
251
+ $time = $times->fetch();
252
+
253
+ echo $time['0'] . '<br>' . '<br>';
254
+
255
+
256
+
257
+
258
+
259
+ }
260
+
261
+
262
+
263
+ ?>
264
+
265
+
266
+
267
+ ```

1

phpMyAdminタグを削除しました

2021/05/25 23:27

投稿

kens_Freelance
kens_Freelance

スコア10

test CHANGED
File without changes
test CHANGED
File without changes