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
<? function lacz_bd(){ if (!$baza){ return false; } return false; } return $wynik; } function wyswietl_urlopy($zapytanie){ lacz_bd(); if (!$wynik){ exit; } echo "<CENTER><table border=1><tr bgcolor=lightgreen></CENTER> "; echo "<th>stopien</td> "; ; for ($i=0; $i<$znalezionych; $i++){ } } function pobierz_stopien($idstopnia){ $zapytanie="select nazwa from stopnie where idstopnia='$idstopnia'"; if(!$wynik) return "brak stopnia"; return $wynik; } function pobierz_wydzial($idwydzialu){ $zapytanie="select nazwa from wydzialy where idwydzialu='$idwydzialu'"; if(!$wynik) return "brak wydzialu"; return $wynik; } function pobierz_urlop($idurlopu){ $zapytanie="select nazwa from urlopy where idurlopu='$idurlopu'"; if(!$wynik) return "brak urlopu"; return $wynik; } function pobierz_nazwisko($idpracownika){ $zapytanie="select nazwisko from pracownicy where idpracownika='$idpracownika'"; if(!$wynik) return "brak nazwiska"; return $wynik; } ?>
plik nowy_prac.php
<?php <html> <head> <title>"baza urlopów"</title> </head> <body> <BODY BGCOLOR="blanchedalmond"> <h1>BAZA urlopów</h1> <form action="index.php?page=wstaw_elew" method="post"> <table border="0"> <td>pracownik</td> <td> <br> <SELECT NAME=pracownik> <option class=form>-- wybierz --</option> <OPTION class=form VALUE=1>Kowalski</OPTION> <OPTION class=form VALUE=2>Nowak</OPTION> </SELECT> </tr></td> <tr> <td>Wydział</td> <td> <br> <SELECT NAME=wydzial> <option class=form>-- wybierz --</option> <OPTION class=form VALUE=1>a</OPTION> <OPTION class=form VALUE=2>b</OPTION> </SELECT> </tr></td> <tr> <td>Stopień</td> <td> <br> <SELECT NAME=stopien> <option class=form>-- wybierz --</option> <OPTION class=form VALUE=1>mgr</OPTION> <OPTION class=form VALUE=2>inż.</OPTION> </SELECT> </tr></td> <tr> <td>urlop</td> <td> <br> <SELECT NAME=urlop> <option class=form>-- wybierz --</option> <OPTION class=form VALUE=1>okolicznościowy</OPTION> <OPTION class=form VALUE=2>wypoczynkowy</OPTION> </SELECT> </tr></td> <tr><td>od</td><td><input type="text" name="od" maxlength="10" size="10"><br /></td></tr> <tr><td>do</td><td><input type="text" name="do" maxlength="10" size="10"><br /></td></tr> <tr><td colspan="2"><input type="submit" value="Zapisz"></td></tr> </table> </form> </body> </html> ?>
plik wstaw_prac.php
<html> <head> <title>"baza"</title> </head> <body> <h1>baza </h1> <?php // utworzenie krótkich nazw zmiennych $idpracownika=$HTTP_POST_VARS['pracownik']; $idwydzialu=$HTTP_POST_VARS['wydzial']; $idstopnia=$HTTP_POST_VARS['stopien']; $idurlopu=$HTTP_POST_VARS['urlop']; $od=$HTTP_POST_VARS['od']; $do=$HTTP_POST_VARS['do']; if ( !$idpracownika || !$idwydzialu || !$idstopnia || !$urlop || !$od || !$do) { echo 'Nie podano wszystkich potrzebnych danych.<br />' .'Wróć do poprzedniej strony i spróbuj ponownie.'; exit; } if (!$db) { exit; } $zapytanie = "insert into ewidencja values ('".$idewidencji."', '".$idpracownika."', '".$idstopnia."', '".$idurlopu."','".$idwydzialu."', '".$od."', '".$do."')"; if ($wynik) ?> <a href="index.php?page=nowy_prac">Dodaj następny</a> <a href="wyswietl_prac.php">Pokaż</a> </body> </html>
plik z funkcją workDays.php
<?php function workDays($date1, $date2, $withStartDay = false) { if ($date2===$date1 && !$withStartDay) return 0; $char=1; if ($date1>$date2) {$datePom=$date1;$date1=$date2;$date2=$datePom;$char=-1;} $count=0; if (!$withStartDay) $lastYear = null; while ($date1<$date2) { if ($year !== $lastYear){ $lastYear = $year; $hol[8] = $easter; $hol[9] = $easterSec; $hol[10] = $cc; } $count++; } $count*=$char; return $count; } ?> <?php #echo workDays('2008-08-14','2008-08-14'); //wyświetli 2, gdyż dwa ostanie dni to weekend
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