Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вычислить время
 
 автор: imchip   (03.07.2011 в 16:01)   письмо автору
 
 

Не могу сообразить. Задача такая, человек пришел на работу в 10 часов, ушел в 19 часов. Нужно вычислить время которое человек находился на работе.
<?
//Пришел 
$in_h "10";
//Ушел
$exit_h "19";
//Для определения, ушел после полуночи или до
$metka date(a);
if (
$metka == "pm") {
echo (
"24" $in_h)-("24" $exit_h); 
}
else if (
$metka == "am")
{
echo 
"am";
echo 
"24" $in_h $exit_h;
?>

Но чтото постоянно не так работает. И еще, человек может уйти и с работы на следующий день. Я не знаю, может есть более адекватные варианты подсета кол-ва отработанного времени?

  Ответить  
 
 автор: alexander95   (03.07.2011 в 16:12)   письмо автору
 
   для: imchip   (03.07.2011 в 16:01)
 

<?
  $start
=9;
  
$end=19;
  
$days=1;//0 - в тот же день, 1 - на следующий, и.т.д.
  
$on=$end-$start+$days*24;
  echo 
$on." hours.";
?>

  Ответить  
 
 автор: imchip   (03.07.2011 в 16:22)   письмо автору
 
   для: alexander95   (03.07.2011 в 16:12)
 

А как мне указать чтобы скрипт определял ушел сегодня или завтра?

  Ответить  
 
 автор: imchip   (03.07.2011 в 16:53)   письмо автору
 
   для: imchip   (03.07.2011 в 16:22)
 

Просто я планировал что пользователь будет указывать время прихода, ухода ну и обед (посчитать не проблема), а как определить что человек ушел на след день.. не ставить же ему галочку (ушел сегодня\на след день)

  Ответить  
 
 автор: Valick   (03.07.2011 в 17:07)   письмо автору
 
   для: imchip   (03.07.2011 в 16:01)
 

Я не знаю, может есть более адекватные варианты подсета кол-ва отработанного времени?
есть, это использование базы данных
в которой фиксируете время прихода на работу и время ухода с работы (соответственно вместе с датой)
этой информацией можно будет "вертеть" как угодно
___
можно и обед учитывать и 15-ти минутные перерывы и больничные и еще много чего

  Ответить  
 
 автор: imchip   (03.07.2011 в 17:16)   письмо автору
 
   для: Valick   (03.07.2011 в 17:07)
 

Причем тут база данных? Понятное дело что я эту информацию не в переменных хранить собираюсь, для меня сейчас важен сам алгоритм.

  Ответить  
 
 автор: Valick   (03.07.2011 в 17:33)   письмо автору
 
   для: imchip   (03.07.2011 в 17:16)
 

да при том что РНР скрипт без базы и РНР скрипт с базой - это совершенно разные коды
использование БД только лишь для хранения переменных - это преступление (точнее ошибка начинающих)
на базу нужно "завязывать" как раз логику скрипта
в идеале из базы нужно извлекать уже готовую информацию, а РНР использовать только для вывода в браузер

  Ответить  
 
 автор: imchip   (03.07.2011 в 18:13)   письмо автору
 
   для: Valick   (03.07.2011 в 17:33)
 

Не подскажеш примера?

  Ответить  
 
 автор: alexander95   (03.07.2011 в 19:05)   письмо автору
 
   для: imchip   (03.07.2011 в 16:01)
 

На самом деле, на удивление мало кодеров знают об вот этом стандартном, но очень удобном классе


Если бы побольше людей потрудилось прочитать эту часть мана, мы куда реже бы видели тут "Опять пхп и даты".

  Ответить  
 
 автор: Valick   (03.07.2011 в 21:05)   письмо автору
 
   для: alexander95   (03.07.2011 в 19:05)
 

на самом деле на удивление этот класс тут нахрен не нужен... (хотя сам по себе он может даже лучше всех)
нужно применять то, что нужно а не тот о чем знаешь
данная задача тонкой красной линией ложиться на базу данных, меня попросили о примере и я в ближайшее время состряпаю код, можете тоже самое приминить сюда свой класс

  Ответить  
 
 автор: imchip   (03.07.2011 в 21:08)   письмо автору
 
   для: Valick   (03.07.2011 в 21:05)
 

Большое спасибо, если вы мне поможете, сейчас у меня работает ваш пример, но я его параллельно дорабатываю (считаю минуты, обеды, округляю делю на деньги)

  Ответить  
 
 автор: Valick   (03.07.2011 в 22:07)   письмо автору
 
   для: imchip   (03.07.2011 в 21:08)
 

Мой пример не может у Вас работать так как его попросту еще нет :)
для начала идея такая "приход на" и "уход с" записывать в раздельные таблицы
это позволит избавиться от UPDATE и использовать INSERT, а так же не накладывать ограничения на количество приходов и уходов в течение дня

  Ответить  
 
 автор: Valick   (04.07.2011 в 11:05)   письмо автору
 
   для: imchip   (03.07.2011 в 21:08)
 

итак для начала в базе имеем 4 таблицы:
1 - таблица пользователей (по привычке user)
из которой нас интересует только поле id_user
остальные поля прроизвольные (имя, фамилия, отчество, дата рождения, семейное положение, образование и тд.)
2 - таблица оснований приходов и уходов ( osnov )
минимум 2 поля id_o | n_o
с такими значениями
0 - окончание смены
1 - начало смены
2 - начало обеденного перерыва
3 - конец обеденного перерыва
4 - начало ненормированного перерыва
5 - конец ненормированного перерыва
6 - вынужденное окончание смены
7 - больничный
8 - выход на работу в связи с производственной необходимостью
и т.д.
3 - таблица прихода ( prihod )
минимум 4 поля id_p | id_user | id_op | datime
id_p - идентификатор строрки (автоинкремент) int
id_user - идентификатор рабочего int
id_op - основание выхода на работу int
datime - дата и время datetime
4 - таблица ухода ( uhod )
минимум 4 поля id_u | id_user | id_ou | datime
id_u - идентификатор строрки (автоинкремент) int
id_user - идентификатор рабочего int
id_ou - основание выхода на работу int
datime - дата и время datetime
___
дополнительные поля пока для эксперемента, чтобы связать таблицы и привязать определенный уход с определенным приходом
скорее всего они будут нужны а посему выносим их в отдельную таблицу
5 - таблица связи ( pruh )
поля id_p | id_u - первичный ключь на оба поля

  Ответить  
 
 автор: MHz   (03.07.2011 в 23:38)   письмо автору
 
   для: imchip   (03.07.2011 в 16:01)
 

А как Вы определяете пришел человек или ушел?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования