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
<?
function lacz_bd(){
if (!$baza){
echo "Połączenie z bazą się nie powiodło."; return false;
}
echo "Wybranie bazy danych nie powiodło się."; return false;
}
return $wynik;
}
function wyswietl_urlopy($zapytanie){
lacz_bd();
if (!$wynik){
echo "Błąd. Połączenie nie powiodło się!"; }
echo "<CENTER><table border=1><tr bgcolor=lightgreen></CENTER> ";
echo "<th>nazwisko</th>";
";
;
for ($i=0; $i<$znalezionych; $i++){
echo "<td><center>".pobierz_nazwisko
($wiersz["idpracownika"])."</td></center>"; echo "<td><center>".pobierz_stopien
($wiersz["idstopnia"])."</td></center>"; echo "<td><center>".pobierz_wydzial
($wiersz["idwydzialu"])."</td></center>"; echo "<td><center>".pobierz_urlop
($wiersz["idurlopu"])."</td></center>"; echo "<td><center>".$wiersz["od"]."</td></center>"; echo "<td><center>".$wiersz["do"]."</td></center>";
}
}
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.';
}
if (!$db)
{
echo 'Błąd: : Połączenie z bazą danych nie powiodło się. Spróbuj jeszcze raz później.'; }
$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;
$hol=array('01-01','05-01','05-03','08-15','11-01','11-11','12-25','12-26'); while ($date1<$date2) {
$year = date('Y', $date1); if ($year !== $lastYear){
$lastYear = $year;
$easter = date('m-d', easter_date
($year)); $hol[8] = $easter;
$hol[9] = $easterSec;
$hol[10] = $cc;
}
$weekDay=date('w',$date1); if (!($weekDay==0
|| $weekDay==6
|| in_array(date('m-d',$date1),$hol))) $count++;
}
$count*=$char;
return $count;
}
?>
<?php
#echo workDays('2008-08-14','2008-08-14'); //wyświetli 2, gdyż dwa ostanie dni to weekend
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
Ten post edytował kmpl 10.11.2008, 19:13:46