Witam po raz kolejny!!

Tworzę baze urlopów i natknąłem się na pewne problemy:

1. w formularzu wprowadzania wpisuję datę rozpoczęcia i zakończenia urlopu. Nie bardzo wiem jak zrobić żeby pojawiało się kolejne pole z obliczoną liczbą urlopu za pomocą dołączonej funkcji workDays. Wszystkie dane muszą zostać zapisane do bazy. Na razie wszystko mi działa, zapisuje do bazy, ale bez ilości obliczonych dni.

Mam 5 tabel:

ewidencja: idewidencji, idpracownika, idstopnia, idurlopu, idwydzialu, od, do, iloscdni
pracownicy: idpracownika, imie, nazwisko
urlopy: idurlopu, nazwa
stopnie: idstopnia, nazwa
wydzialy: idwydzialu, nazwa


plik funkcje.php

  1. <?
  2.  
  3. function lacz_bd(){
  4.  $baza = @mysql_pconnect("localhost", "root", "");
  5.  
  6.  if (!$baza){
  7.    echo "Połączenie z bazą się nie powiodło.";
  8.    return false;
  9.  }
  10.  if (!@mysql_select_db("urlopy")){
  11.    echo "Wybranie bazy danych nie powiodło się.";
  12.    return false;
  13.  }
  14.  return $wynik;
  15. }
  16.  
  17. function wyswietl_urlopy($zapytanie){
  18.  
  19.  lacz_bd();
  20.  $wynik=mysql_query($zapytanie);
  21.  if (!$wynik){
  22.    echo "Błąd. Połączenie nie powiodło się!";
  23.    exit;
  24.  }
  25.  $znalezionych=mysql_num_rows($wynik);
  26.  
  27.  echo "<CENTER><table border=1><tr bgcolor=lightgreen></CENTER>
  28. ";
  29.  
  30. echo "<th>nazwisko</th>";
  31.  
  32.   echo "<th>stopien</td>
  33. ";
  34.  echo "<th>wydzial</th>";
  35.  echo "<th>urlop</th>";
  36. echo "<th>od</th>";
  37. echo "<th>do</th>";
  38.  
  39. ;
  40.  
  41.  for ($i=0; $i<$znalezionych; $i++){
  42.    $wiersz= mysql_fetch_array($wynik);
  43.    echo "<tr>";
  44.  
  45.    echo "<td><center>".pobierz_nazwisko($wiersz["idpracownika"])."</td></center>";
  46.     echo "<td><center>".pobierz_stopien($wiersz["idstopnia"])."</td></center>";
  47.    echo "<td><center>".pobierz_wydzial($wiersz["idwydzialu"])."</td></center>";
  48.    echo "<td><center>".pobierz_urlop($wiersz["idurlopu"])."</td></center>";
  49.    echo "<td><center>".$wiersz["od"]."</td></center>";
  50.    echo "<td><center>".$wiersz["do"]."</td></center>";
  51.  
  52.    echo "</tr>";
  53.  }
  54.  echo "</table>";
  55. }
  56.  
  57. function pobierz_stopien($idstopnia){
  58.  $zapytanie="select nazwa from stopnie where idstopnia='$idstopnia'";
  59.  $wynik=mysql_query($zapytanie);
  60.  if(!$wynik) return "brak stopnia";
  61.  if(mysql_num_rows($wynik)==0) return false;
  62.  $wynik=mysql_result($wynik, 0, "nazwa");
  63.  return $wynik;
  64. }
  65.  
  66.  
  67. function pobierz_wydzial($idwydzialu){
  68.  $zapytanie="select nazwa from wydzialy where idwydzialu='$idwydzialu'";
  69.  $wynik=mysql_query($zapytanie);
  70.  if(!$wynik) return "brak wydzialu";
  71.  if(mysql_num_rows($wynik)==0) return false;
  72.  $wynik=mysql_result($wynik, 0, "nazwa");
  73.  return $wynik;
  74. }
  75.  
  76.  
  77. function pobierz_urlop($idurlopu){
  78.  $zapytanie="select nazwa from urlopy where idurlopu='$idurlopu'";
  79.  $wynik=mysql_query($zapytanie);
  80.  if(!$wynik) return "brak urlopu";
  81.  if(mysql_num_rows($wynik)==0) return false;
  82.  $wynik=mysql_result($wynik, 0, "nazwa");
  83.  return $wynik;
  84. }
  85.  
  86.  
  87. function pobierz_nazwisko($idpracownika){
  88.  $zapytanie="select nazwisko from  pracownicy where idpracownika='$idpracownika'";
  89.  $wynik=mysql_query($zapytanie);
  90.  if(!$wynik) return "brak nazwiska";
  91.  if(mysql_num_rows($wynik)==0) return false;
  92.  $wynik=mysql_result($wynik, 0, "nazwisko");
  93.  return $wynik;
  94.  
  95.  }
  96. ?>


plik nowy_prac.php

  1. <?php
  2. <html>
  3. <head>
  4.  <title>"baza urlopów"</title>
  5. </head>
  6.  
  7. <body>
  8. <BODY BGCOLOR="blanchedalmond">
  9.  <h1>BAZA urlopów</h1>
  10.  
  11.  <form action="index.php?page=wstaw_elew" method="post">
  12.    <table border="0">
  13.  
  14.  
  15.     <td>pracownik</td>
  16.                        <td>
  17.                        <br>
  18.                                <SELECT NAME=pracownik>
  19.                                        <option class=form>-- wybierz --</option>
  20.                                        <OPTION class=form VALUE=1>Kowalski</OPTION>
  21.                                        <OPTION class=form VALUE=2>Nowak</OPTION>
  22.  
  23.  
  24.                                </SELECT>
  25.                        </tr></td>
  26.  
  27.      <tr>
  28.                        <td>Wydział</td>
  29.                        <td>
  30.                        <br>
  31.                                <SELECT NAME=wydzial>
  32.                                        <option class=form>-- wybierz --</option>
  33.                                        <OPTION class=form VALUE=1>a</OPTION>
  34.                                        <OPTION class=form VALUE=2>b</OPTION>
  35.  
  36.                                </SELECT>
  37.                        </tr></td>
  38. <tr>
  39.       <td>Stopień</td>
  40.                        <td>
  41.                        <br>
  42.                                <SELECT NAME=stopien>
  43.                                        <option class=form>-- wybierz --</option>
  44.                                        <OPTION class=form VALUE=1>mgr</OPTION>
  45.                                        <OPTION class=form VALUE=2>inż.</OPTION>
  46.  
  47.                                </SELECT>
  48.                        </tr></td>
  49.                        <tr>
  50.  
  51.           <td>urlop</td>
  52.                        <td>
  53.                        <br>
  54.                                <SELECT NAME=urlop>
  55.                                        <option class=form>-- wybierz --</option>
  56.                                        <OPTION class=form VALUE=1>okolicznościowy</OPTION>
  57.                                        <OPTION class=form VALUE=2>wypoczynkowy</OPTION>
  58.  
  59.                                </SELECT>
  60.                        </tr></td>
  61. <tr><td>od</td><td><input type="text" name="od" maxlength="10" size="10"><br /></td></tr>
  62. <tr><td>do</td><td><input type="text" name="do" maxlength="10" size="10"><br /></td></tr>
  63.  
  64. <tr><td colspan="2"><input type="submit" value="Zapisz"></td></tr>
  65.  
  66.    </table>
  67.  </form>
  68. </body>
  69. </html>
  70. ?>


plik wstaw_prac.php

  1. <html>
  2. <head>
  3.  <title>"baza"</title>
  4. </head>
  5. <body>
  6. <h1>baza </h1>
  7. <?php
  8.  // utworzenie krótkich nazw zmiennych
  9.  
  10.  
  11.  $idpracownika=$HTTP_POST_VARS['pracownik'];
  12.  $idwydzialu=$HTTP_POST_VARS['wydzial'];
  13.  $idstopnia=$HTTP_POST_VARS['stopien'];
  14.  $idurlopu=$HTTP_POST_VARS['urlop'];
  15.  $od=$HTTP_POST_VARS['od'];
  16.  $do=$HTTP_POST_VARS['do'];
  17.  if ( !$idpracownika || !$idwydzialu || !$idstopnia || !$urlop || !$od || !$do)
  18.  {
  19.     echo 'Nie podano wszystkich potrzebnych danych.<br />'
  20.          .'Wróć do poprzedniej strony i spróbuj ponownie.';
  21.     exit;
  22.  }
  23.  
  24.   $idpracownika = addslashes($idpracownika);
  25.   $idstopnia = addslashes($idstopnia);
  26.   $idwydzialu = addslashes($idwydzialu);
  27.   $idurlopu = addslashes($idurlopu);
  28.   $od = addslashes($od);
  29.   $do = addslashes($do);
  30.  
  31.  @ $db = mysql_pconnect('localhost', 'root', '');
  32.  
  33.  if (!$db)
  34.  {
  35.     echo 'Błąd: : Połączenie z bazą danych nie powiodło się. Spróbuj jeszcze raz później.';
  36.     exit;
  37.  }
  38.  
  39.  mysql_select_db('urlopy');
  40.  $zapytanie = "insert into ewidencja values ('".$idewidencji."', '".$idpracownika."', '".$idstopnia."',  '".$idurlopu."','".$idwydzialu."', '".$od."', '".$do."')";
  41.  $wynik = mysql_query($zapytanie);
  42.  if ($wynik)
  43.      echo  mysql_affected_rows().'  zapisano do bazy.';
  44. ?>
  45.     <a href="index.php?page=nowy_prac">Dodaj następny</a>
  46.        <a href="wyswietl_prac.php">Pokaż</a>
  47. </body>
  48. </html>


plik z funkcją workDays.php
  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.  
  34.    return $count;
  35. }
  36. ?>
  37.  
  38. <?php
  39.  
  40. #echo workDays('2008-08-14','2008-08-14'); //wyświetli 2, gdyż dwa ostanie dni to weekend
  41.  
  42. echo workDays('2008-11-11','2008-11-26',true);//wyświetli 3, gdyż liczymy z dniem początkowym


Chyba najlepiej by było gdyby po naciśnięciu przycisku zapisz można poprawić ewentualnie wprowadzone dane.
Proszę o ewentualne uwagi i pomoc w obliczeniu ilości dni wykorzystywanego urlopu.
Pozdrawiam