Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> formularz i liczenie dni
kmpl
post
Post #1





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 4.06.2006

Ostrzeżenie: (0%)
-----


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?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
  40.  
  41. echo workDays('2008-08-14','2008-08-18',true);//wyświetli ...., gdyż liczymy z dniem początkowym
  42. ?>



Pozdrawiam

Ten post edytował kmpl 5.11.2008, 21:23:30
Go to the top of the page
+Quote Post
decha-design
post
Post #2





Grupa: Zarejestrowani
Postów: 415
Pomógł: 46
Dołączył: 26.05.2007
Skąd: Sandomierz

Ostrzeżenie: (0%)
-----


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

Ten post edytował decha-design 5.11.2008, 18:07:06
Go to the top of the page
+Quote Post
Ociu
post
Post #3





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




Jesteś zarejestrowany ponad 2 lata na forum i dalej nie wiesz, że jest coś takiego jak bbCode ? Proszę poprawić post, inaczej zamknę temat.
Go to the top of the page
+Quote Post
kmpl
post
Post #4





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 4.06.2006

Ostrzeżenie: (0%)
-----


Dzięki za kod i sorry za bbcode.
Pozdrawiam
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 00:37