Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: График работы.

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: PHP + MySQL посчет времени и вывод помесячно.
SofiaKit
Отправлено: 05 Августа, 2013 - 18:43:00
Post Id


Частый гость


Покинул форум
Сообщений всего: 182
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Очень сложная задача передо мной встала... вобщем нужно вывести график, где будет указано сколько кто отработал именно в формате H:i:s

Структура таблицы Time1
StartDateTime | EndDateTime | UserName
2013-07-10 15:03:08 2013-07-11 09:03:46 Иванов И.И.
2013-07-11 10:41:05 2013-07-12 09:00:33 Иванов И.И.
2013-07-20 12:50:50 2013-07-21 09:16:20 Березина Е.А.
2013-08-01 12:49:50 2013-08-02 09:01:20 Березина Е.А.

Тип StartDateTime и EndDateTime datetime
StartDateTime - начало рабочей смены
EndDateTime - конец рабочей смены

Необходимо посчитать и вывести сколько часов отработал человек в таком формате:
В Августе работали:
Березина Е.А. отработала столько-то столько часов

В Июле работали:
Иванов И.И. отработал столько-то столько часов
Березина Е.А. отработала столько-то столько часов

Подозреваю что код получится гиганский... но ооочень надо, очень очень... Запарилась уже считать на калькуляторе эти часы.
 
 Top
EuGen Администратор
Отправлено: 05 Августа, 2013 - 18:52:23
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Вот пример для вывода данных в секундах:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT SUM(UNIX_TIMESTAMP(EndDateTime) - UNIX_TIMESTAMP(StartDateTime)) AS work_seconds, UserName FROM time1 GROUP BY UserName

В часе 60 минут, в минуте 60 секунд - уверен, с арифметической задачей перевода числа секунд в формат H:i:s Вы справитесь.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
SofiaKit
Отправлено: 05 Августа, 2013 - 19:08:40
Post Id


Частый гость


Покинул форум
Сообщений всего: 182
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




как-то не правильно считает:
PHP:
скопировать код в буфер обмена
  1. $result_user = mysql_query("SELECT SUM(UNIX_TIMESTAMP(EndDateTime) - UNIX_TIMESTAMP(StartDateTime)) AS work_seconds, UserName FROM time1 GROUP BY UserName");
  2. while ($row_user = mysql_fetch_array($result_user)) {
  3.      echo "$row_user[UserName] - ";
  4.          echo gmdate("H:i:s", $row_user[work_seconds]);
  5.          echo '<br>';
  6.  }

сгрупировывает как надо... считать получается должно время во всех месяцах... и выводит вообще как будто человек не работал )) то 20 часов за все время отработал, то вообще в минутах. Однако
(Добавление)
вот такой вот запрос правильно считает Радость
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF(EndDateTime,StartDateTime)))) AS work_seconds, UserName FROM time1 GROUP BY UserName

(Отредактировано автором: 05 Августа, 2013 - 20:03:33)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB