Я снова, ребята. Заголовки довольно понятны, но для деталей: Я хочу отображать результаты timediff (в часах) на веб-странице, но я не могу окунуться в голову, как это сделать. Я использую PHP и Codeigniter для этого сайта. До сих пор у меня есть базы данных MySQL с таблицей под названием «server_log», который выглядит как:Показать результат TIMEDIFF в результате запроса mySQL на веб-страницу
+--------+-----------+--------+---------+------------+-------------+
| log_id | host_name | status | host_id | profile_id | event_date |
+--------+-----------+-+----------------+------------+-------------+
| 1 | http://...| Online | 1 | 1 | *timestamp* |
+--------+-----------+--------+---------+--------------------------+
* Это показывает также другие записи со статусом «Offline» и «Техническое обслуживание».
У меня есть этот запрос, чтобы получить данные для каждого пользователя (на основе profile_id) ж/с, также сортируются по статусу ('Online', 'Offline', или 'Maintenance'):
SELECT * FROM server_log
WHERE (profile_id=$id AND status='Online')
AND event_date BETWEEN $from_date AND $to_date
ORDER BY event_date,host_id;
* from_date и to_date - это результаты веб-страницы, которые позволяют пользователю выбирать дату «От» и «Кому» для фильтрации результатов, таких как страница отчета. Проблема заключается в том, что после указанного выше запроса я не знаю, что мне еще нужно, чтобы рассчитать результаты TIMEDIFF для каждого сервера (host_id), а затем отобразить их на веб-странице. (Я хотел бы получить TIMEDIFF между результатами после получения результатов запроса для каждого состояния) Как получить результат TIMEDIFF (целое число)?
Проще говоря, я хочу, чтобы поток, чтобы быть похожим на это:
[1] After 1st query: (SELECT ALL 'Online' for $id)
log_id | host_name | status | host_id | profile_id | event_date
1 ping.test1 Online 1 2 **
2 ping.test1 Online 1 2 **
3 ping.test2 Offline 2 2 **
4 ping.test2 Offline 2 2 **
[2] After 2nd query: (loop for each host_id)
log_id | host_name | status | host_id | profile_id | event_date
1 ping.test1 Online 1 2 **
2 ping.test1 Online 1 2 **
-> then calculate diff_date of event_dates
---> then return value to be assigned to $data['reports_ping']
-----> back to [1] but selecting all 'Offline', then 'Maintenance'
-------> if all values are assigned, display $data['reports_ping'] as row (foreach)
Я хотел бы результаты, чтобы показать что-то вроде:
+------------+------------+------------+-------------+-------------+
| profile_id | host_name | online_hrs | offline_hrs | maintenance |
+------------+------------+------------+-------------+-------------+
| 1 | http://... | 2 | 1 | 0 |
+------------+------------+------------+-------------+-------------+
Я относительно новичок, и на самом деле не что хорошо с CodeIgniter, поэтому любая помощь с этим будет ДЕЙСТВИТЕЛЬНО оценена. Заранее спасибо!
TIMEDIFF означает разное время между event_date и сейчас? –
Я не совсем * броский *, который вы обновили? –
Добавлено более подробно выше, @Colour Dalnet –