Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: formularz i liczenie dni
Forum PHP.pl > Forum > PHP
kmpl
Nie mogę sobie poradzić z formularzem. W jednym z pól wpisuję datę (od) i w drugim datę (do). Mam funkcję obliczającą różnicę między tymi datami "workdays" i nie wiem jak zrobić, aby w polu ilość dni zostały policzone dni (chodzi o dni robocze urlopu). Jak funkcję podpiąć do prostego przykładowego formularza?
Formularz wprowadza dane do bazy.

  1. <?php
  2. function workDays($date1, $date2, $withStartDay = false) {
  3.    $date1=strtotime($date1);
  4.    $date2=strtotime($date2);
  5.    if ($date2===$date1 && !$withStartDay) return 0;
  6.    $char=1;
  7.    if ($date1>$date2)
  8.        {$datePom=$date1;$date1=$date2;$date2=$datePom;$char=-1;}
  9.    $count=0;
  10.    if (!$withStartDay)
  11.        $date1=strtotime('+1 day',$date1);
  12.    $date2=strtotime('+1 day',$date2);
  13.    $lastYear = null;
  14.    $hol=array('01-01','05-01','05-03','08-15','11-01','11-11','12-25','12-26');
  15.    while ($date1<$date2) {
  16.        $year = date('Y', $date1);
  17.        if ($year !== $lastYear){
  18.            $lastYear = $year;
  19.            $easter = date('m-d', easter_date($year));
  20.            $date = strtotime($year . '-' . $easter);
  21.            $easterSec = date('m-d', strtotime('+1 day', $date));
  22.            $cc = date('m-d', strtotime('+60 days', $date));
  23.            $hol[8] = $easter;
  24.            $hol[9] = $easterSec;
  25.            $hol[10] = $cc;
  26.        }
  27.        $weekDay=date('w',$date1);
  28.        if (!($weekDay==0 || $weekDay==6 || in_array(date('m-d',$date1),$hol)))
  29.            $count++;
  30.        $date1=strtotime('+1 day',$date1);
  31.    }
  32.    $count*=$char;
  33.    return $count;
  34. }
  35. ?>
  36.  
  37. <?php
  38.  
  39. #echo workDays('2008-08-14','2008-08-14'); //wyświetli ...., gdyż dwa ostanie dni to weekend - zamiast ręcznego wpisywania jak podpiąć do formularza?questionmark.gif
  40.  
  41. echo workDays('2008-08-14','2008-08-18',true);//wyświetli ...., gdyż liczymy z dniem początkowym
  42. ?>



Pozdrawiam
decha-design
e o to chodzi?

  1. <?php
  2. $days = workDays('2008-08-14','2008-08-14')
  3.  
  4. echo '<input type="text" name="sth" value="'.$days.'" />';
  5. ?>


btw. UŻYWAJ BBCODE
Ociu
Jesteś zarejestrowany ponad 2 lata na forum i dalej nie wiesz, że jest coś takiego jak bbCode ? Proszę poprawić post, inaczej zamknę temat.
kmpl
Dzięki za kod i sorry za bbcode.
Pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.